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

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

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

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

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

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

這將匹配像 /myblog/entries/add/ 和 /auth/groups/add/ 這樣的URL 。然而,對(duì)于用戶對(duì)象的添加頁(yè)面( /auth/user/add/ )是個(gè)特殊情況,因?yàn)樗粫?huì)顯示所有的表單域,它顯示兩個(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

不過(guò),就如我們多次在這章提到的,這樣做并不優(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/ 的請(qǐng)求將會(huì)被 user_add_stage 視圖處理。 盡管URL也匹配第二種模式,它會(huì)先匹配上面的模式。 (這是短路邏輯。)

相關(guān)文章

最新評(píng)論