Django:如何在我的專案urlconf中覆蓋應用程式提供的url?
假設我有一個具有三個應用程式的Django專案:foo,bar和膠水.我試圖遵循可重用的應用約定,所以foo和bar不依賴於(並且不知道任何事情)彼此或膠水. Glue包含將其他兩個應用程式整合到網站中的程式碼.
Foo提供一個我想要包含在由bar提供的頁面之一的模板標籤.可以將條形圖的檢視傳遞給替代模板.我用膠水製作一個模板,擴充套件了bar的模板,並且包含了foo中的模板標籤.為了將我的新模板傳遞給bar的檢視,我需要修改指向它的urlconf條目.
我的專案urlconf看起來像這樣:
urlpatterns = patterns('', (r'^$', include('glue.urls')), (r'^foo/', include('foo.urls')), (r'^bar/', include('bar.urls')), )
將替代模板(或任何其他任意檢視引數,就此而言)傳遞給檢視的最優雅的方法是什麼?我不想直接修改bar的urlconf,因為這將使它依賴於膠水.
我可以想到的唯一其他方法是刪除include(‘bar.urls’),將bar的urlconf中的url模式複製到專案urlconf中,並修改我感興趣的模式,這種方法違反了DRY原則.有沒有其他的解決方案,我失蹤了?
urlpatterns = patterns('', (r'^$', include('glue.urls')), (r'^foo/', include('foo.urls')), # This will override the same URL in bar's urlconf: (r'^bar/stuff/$', 'glue.views.new_bar_stuff', {'arg': 'yarrgh'}, 'bar_stuff'), (r'^bar/', include('bar.urls')), )
程式碼日誌版權宣告:
翻譯自:http://stackoverflow.com/questions/9306143/django-how-do-i-override-app-supplied-urls-in-my-project-urlconf