Django框架中處理URLconf中特定的URL的方法
有時你有一個模式來處理在你的URLconf中的一系列URL,但是有時候需要特別處理其中的某個URL。 在這種情況下,要使用將URLconf中把特殊情況放在首位的線性處理方式 。
比方說,你可以考慮通過下面這個URLpattern所描述的方式來向Django的管理站點添加一個目標頁面
urlpatterns = patterns('',
# ...
('^([^/]+)/([^/]+)/add/$', views.add_stage),
# ...
)
這將匹配像 /myblog/entries/add/ 和 /auth/groups/add/ 這樣的URL 。然而,對于用戶對象的添加頁面( /auth/user/add/ )是個特殊情況,因為它不會顯示所有的表單域,它顯示兩個密碼域等等。 我們 可以 在視圖中特別指出以解決這種情況:
def add_stage(request, app_label, model_name):
if app_label == 'auth' and model_name == 'user':
# do special-case code
else:
# do normal code
不過,就如我們多次在這章提到的,這樣做并不優(yōu)雅: 因為它把URL邏輯放在了視圖中。 更優(yōu)雅的解決方法是,我們要利用URLconf從頂向下的解析順序這個特點:
urlpatterns = patterns('',
# ...
('^auth/user/add/$', views.user_add_stage),
('^([^/]+)/([^/]+)/add/$', views.add_stage),
# ...
)
在這種情況下,象 /auth/user/add/ 的請求將會被 user_add_stage 視圖處理。 盡管URL也匹配第二種模式,它會先匹配上面的模式。 (這是短路邏輯。)
相關文章
Python環(huán)境的安裝以及PyCharm編輯器配置教程詳解
優(yōu)質的教程可以讓我們少走很多彎路,這一點毋庸置疑。這篇文章主要為大家介紹了純凈Python環(huán)境的安裝以及PyCharm編輯器的配置,需要的可以參考一下2023-04-04
python使用redis實現(xiàn)消息隊列(異步)的實現(xiàn)完整例程
本文主要介紹了python使用redis實現(xiàn)消息隊列(異步)的實現(xiàn)完整例程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-01-01
安裝Python的web.py框架并從hello world開始編程
這篇文章主要介紹了安裝Python的web.py框架并從hello world開始編程,web.py的作者年輕的Aaron Swartz已經(jīng)離世,緬懷大神,需要的朋友可以參考下2015-04-04
解決Building?wheel?for?wrapt?(setup.py)?...?error的問題
這篇文章主要介紹了解決Building?wheel?for?wrapt?(setup.py)?...?error的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-12-12

