我有巨大的urls.py
用線的十幾映射到的意見,如:Django的:如何動態的URL帶或不帶urls.py
url(r'^do_foo$', views.do_foo),
即網址完全相同的觀點內匹配的函數名。
我不想創建一個將url作爲參數的調度程序,並找到相應的性能原因方法。
問:
有沒有辦法要麼縮短urls.py
到這樣一行
url(r'^(.*)$', 'views.\\1'),
或完全刪除的urls.py
。
我有巨大的urls.py
用線的十幾映射到的意見,如:Django的:如何動態的URL帶或不帶urls.py
url(r'^do_foo$', views.do_foo),
即網址完全相同的觀點內匹配的函數名。
我不想創建一個將url作爲參數的調度程序,並找到相應的性能原因方法。
問:
有沒有辦法要麼縮短urls.py
到這樣一行
url(r'^(.*)$', 'views.\\1'),
或完全刪除的urls.py
。
的urlpatterns
變量只是Python的,所以如果你能確定你想要映射到網址,這可調用就可以自動執行它:
import inspect
import views
urlpatterns = [url(r'^%s$' % name, view) for name, view in views.__dict__.items()
if callable(view) and
inspect.getargspec(view)[0][0] == 'request']
但在此之前仔細思考 - 自動曝光所有意見的網址可以打開您不打算公開的部分應用程序。上面的檢查argspec檢查是向非意外開放太多的一小步,但我不想太依賴它太深。
謝謝!這正是我要找的。是的,我保證要小心;) – dsamersoff 2014-09-27 07:15:18
如果這回答了你的問題,你可能想要將它標記爲接受,如下所述:http://meta.stackexchange.com/questions/5234/how-does-accepting-an -answer-working – 2014-09-27 17:59:30
您是否對如何重載django url調度程序有所瞭解,而不是爲每個請求生成urlpatterns? – dsamersoff 2014-09-28 06:46:58
在每個URL的末尾$符號代表在末端
例如精確匹配,
url(r'^do_foo$', views.do_foo)
僅匹配/ do_foo而
url(r'^do_foo', views.do_foo)
將匹配
doo_foo/hello
doo_foo/abcd/bar
你可以用它來減少你的urls.py的大小
你無法擺脫urls.py的全部,但可以使用
您可以映射所有URL映射的所有URL相同的查看功能以相同的查看功能使用
url(r'', views.do_foo)
'爲了性能原因',有你的基準來支持它嗎? – 2014-09-26 18:46:47
是的,這是完全可行的,您可以直接從模板中調用視圖,而不需要url。示例'{%url'myapp.views.viewname'%}' – karthikr 2014-09-26 18:58:46
@karthikr - 在urls.py的某處不是沒有匹配的模式,您不能!我認爲OP想要自動化映射URL模式來查看函數,而不是避免給他們提供'name'參數。 – 2014-09-26 19:54:45