2011-10-28 46 views
3

您將如何使用django模型和模板,而不是URL路由系統?我想換一個類似PHP的urls.py系統,其中的URL會告訴你代碼正在運行的位置。或者也許像rails這樣的更自動化的東西 - URL總是包含相同的組件,如應用程序名稱,模型名稱和視圖名稱。Django的替代URL路由器

我只是不同意django philosophy statement這條「將URL綁定到Python函數名稱是一件壞事和醜陋的事情」。漂亮的網址對我來說並不是那麼重要,而且IMVHO不值得在多個urls.py文件和幾十個正則表達式中尋找在特定URL後面運行的代碼的間接迷宮。這是個人選擇,對吧? Django通常非常模塊化,可以讓您將主要組件替換爲其他組件。那麼,我將如何替換接受請求URL的部分並決定運行哪個視圖?

django是否有任何替代URL路由器?

回答

4

您只需要在urls.py中匹配所有內容的一行,然後將您的處理程序/調度程序編寫爲視圖。該處理程序根據網址的各個部分執行任何操作......

2

我從來沒有聽說過任何人成功交換過Django的URL路由系統。這當然沒有問題 - core.handlers.base.BaseHandler.get_response直接調用urlresolvers.RegexURLResolver。可以想象,您可以在堆棧底部添加一箇中間件,該中間件調度到您自己的URL解析系統並返回響應,從而繞過Django系統,但這有點不便。

如果您更喜歡Rails之類的東西,那麼您可能需要嘗試其他框架之一 - 例如,Pyramid使用的路徑系統與Rails非常相似。金字塔比Django更容易插入,所以你應該能夠插入基於Django的Jinja2模板系統。但是,沒有辦法單獨使用Django的ORM,所以你需要使用SQLAlchemy(它可以以一種不是大不相同的方式使用)。