欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Django框架中處理URLconf中特定的URL的方法

 更新時(shí)間:2015年07月20日 09:32:18   投稿:goldensun  
這篇文章主要介紹了Django框架中處理URLconf中特定的URL的方法,Django是豐富多彩的Python框架中最具人氣的一個(gè),需要的朋友可以參考下

有時(shí)你有一個(gè)模式來處理在你的URLconf中的一系列URL,但是有時(shí)候需要特別處理其中的某個(gè)URL。 在這種情況下,要使用將URLconf中把特殊情況放在首位的線性處理方式 。

比方說,你可以考慮通過下面這個(gè)URLpattern所描述的方式來向Django的管理站點(diǎn)添加一個(gè)目標(biāo)頁面

urlpatterns = patterns('',
  # ...
  ('^([^/]+)/([^/]+)/add/$', views.add_stage),
  # ...
)

這將匹配像 /myblog/entries/add/ 和 /auth/groups/add/ 這樣的URL 。然而,對于用戶對象的添加頁面( /auth/user/add/ )是個(gè)特殊情況,因?yàn)樗粫@示所有的表單域,它顯示兩個(gè)密碼域等等。 我們 可以 在視圖中特別指出以解決這種情況:

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)雅: 因?yàn)樗裊RL邏輯放在了視圖中。 更優(yōu)雅的解決方法是,我們要利用URLconf從頂向下的解析順序這個(gè)特點(diǎn):

urlpatterns = patterns('',
  # ...
  ('^auth/user/add/$', views.user_add_stage),
  ('^([^/]+)/([^/]+)/add/$', views.add_stage),
  # ...
)

在這種情況下,象 /auth/user/add/ 的請求將會被 user_add_stage 視圖處理。 盡管URL也匹配第二種模式,它會先匹配上面的模式。 (這是短路邏輯。)

相關(guān)文章

最新評論