Django:URL-patterns的高階使用方式與URL傳遞引數
阿新 • • 發佈:2019-02-13
# urls.py
from django.conf.urls.defaults import *
from mysite import views
urlpatterns = patterns('',
(r'^blog/$', views.page), #URLconf中把特殊情況放在首位的處理
(r'^blog/page(?P<num>d+)/$', views.page),
)
# views.py
def page(request, num='1'):
# Output the appropriate page of blog entries, according to num.
# ...
在這裡,兩個URL表示式都指向了同一個檢視 views.page ,但是第一個表示式沒有傳遞任何引數。 如果匹配到了第一個樣式, page() 函式將會對引數 num 使用預設值 "1" ,如果第二個表示式匹配成功, page() 函式將使用正則表示式傳遞過來的num的值。(注:我們已經注意到設定預設引數值是字串 `` ‘1’`` ,不是整數`` 1`` 。為了保持一致,因為捕捉給`` num`` 的值總是字串。每個被捕獲的引數將被作為純Python字串來發送。
5、包含其他urls
from django.conf.urls.defaults import * urlpatterns = patterns('', (r'^weblog/', include('mysite.blog.urls')), #注意這裡不使用$來匹配結束,因為路徑後面的引數可能會被包含urls中的patterns匹配 (r'^photos/', include('mysite.photos.urls')), (r'^about/$', 'mysite.views.about'), )
urlpatterns = patterns('', (r'^(?P<username>w+)/blog/', include('foo.urls.blog')), )另外,傳遞額外的URLconf選項到 include() , 就像你可以通過字典傳遞額外的URLconf選項到普通的檢視。 當你這樣做的時候,被包含URLconf的 每一 行都會收到那些額外的引數。與捕獲引數時等價的
urlpatterns = patterns('', (r'^blog/', include('inner'), {'blogid': 3}), )這種技術僅當你確信在涉及到的接受到額外你給出的選項的每個URLconf時有用的才奏效。