1. 程式人生 > 其它 >路由匹配、無名有名分組、反向解析、無名有名解析、路由分發

路由匹配、無名有名分組、反向解析、無名有名解析、路由分發

一、路由匹配

基本格式:
url(正則表示式,函式或者型別地址)
from django.conf.urls import url

urlpatterns = [
     url(正則表示式, views檢視函式,引數,別名),
]

引數說明:
正則表示式:一個正則表示式字串
views檢視函式:一個可呼叫物件,通常為一個檢視函式或一個指定檢視函式路徑的字串
引數:可選的要傳遞給檢視函式的預設引數(字典形式)
別名:一個可選的name引數
路由匹配的原則:從上往下正則表示式能夠匹配到內容就算匹配成功會立刻執行後面的檢視函式並且結束整個路由匹配過程

在路由匹配環節如果第一次都沒有匹配上django會在路徑後面加斜槓再次匹配


APPEND_SLASH = True # 改引數可以控制 建議使用預設的自動新增(系統預設是True,匹配不到就加斜槓再次匹配)

APPEND_SLASH = False #取消自動加斜槓

urlpatterns = [  
      url(r'^admin/', admin.site.urls),  
      # 首頁  
     url(r'^$',views.home),  
      url(r'^test/$',views.test),  
      url(r'^testadd/$',views.testadd),  
       # 404頁面  
      url(r''
,views.error) ]

二、django之無名有名分組

1.無名分組

分組:就是給某一段 正則表示式 用小括號擴起來

url(r'^test/([0-9]{4})/',views.test)  # test(request,1234)

def test(request,xx):
    print(xx)
    return HttpResponse('test')
在路由匹配如果將某部分正則使用括號括起來了 
無名分組就是將括號內正則表示式匹配到的內容當作位置引數傳遞給後面的檢視函式

2.有名分組

url(r'^testadd/(?P<year>[0-9]{4})
',views.testadd) # testadd(request,year=1234)

​def testadd(request,year):
print(year)
return HttpResponse('testadd')

在路由匹配如果將某部分正則使用括號括起來了
那麼該部分正則匹配到的內容會當做關鍵字引數傳遞給後面的檢視函式

3.無名有名能否混用?(不能混用)

url(r'^index/(\d+)/(?P<year>\d+)/',views.index)
    
def index(request,args,year):
    print(args,year)
    return HttpResponse("index")

4.單個情況下可以重複使用

  url(r'^index/(\d+)/(\d+)/(\d+)/',views.index)
  url(r'^index/(?P<yyy>\d+)/(?P<xxx>\d+)/',views.index)
三、反向解析