2010-03-29 89 views
2

我已經在Asp.Net MVC中編程了相當長一段時間,並且擴展了一點點,超出了.Net世界。我最近開始學習Python和Django。我很享受Django,但是我從Asp.Net MVC中遺漏的一件事是從我的url到我的控制器動作的自動路由。Django中的Asp.Net MVC風格路由

在Asp.Net MVC我可以建立多采用這種單一默認路由我的應用程序:

routes.MapRoute(
     "Default",            // Route name 
     "{controller}/{action}/{id}",       // URL with parameters 
     new { controller = "Home", action = "Index", id = "" } // Parameter defaults 
); 

在Django中,我發現自己添加一個條目的urls.py的,我想每個視圖揭露這導致了比我在Asp.Net MVC中習慣的更多的url模式。

有沒有辦法在Django中以類似於Asp.Net MVC的方式處理「[Application]/view/[params]」的單個url模式?也許在主網站級別?

+0

我想我在某個地方讀過,有可能但不建議這樣做。我可以理解你希望這樣做(少工作),但另一方面,如果明確指定URLS和視圖,則更加靈活(還可以更改URL)。 – 2010-03-29 16:33:01

+0

我可以理解並同意將路由定義從類中分離出來,但是如果80%的路由遵循相同的約定,那麼爲該約定設置一個url模式會很好。 – 2010-04-06 21:11:03

+2

有趣的是,我想到了之前在django中開發並遷移到asp.net的這個問題。我討厭asp.net隱式路由配置,因爲我覺得我無法控制它...我真的想做路由django風格:) – gardarh 2013-01-25 13:47:28

回答

2

查看可能不僅是功能,也是一個類。

您可以使用__call__方法輕鬆指定某種DispatchedView類,並根據剩餘的URI調度方法。另外,您可以使用CherryPy調度程序啓發自己。

但是,認爲使用命名模式並使URI和視圖完全解耦是比較麻煩的。

+0

我見過CherryPy在我關於其他Python主題的研究中多次出現過。我將不得不更多地閱讀它,看看我能想出什麼。 – 2010-04-06 21:09:27