1. 程式人生 > >路由控制

路由控制

name 表達式 表達 ddd cut 不同 app test ews

路由層:

1簡單匹配

  

  1、第一個參數是正則表達式(如果要精準匹配:‘^publish/$’)

  2、第二個參數是試圖(不要加括號)

  3、Url(r’^admin/’,admin.site.urls),

2無名分組

按位置參數分組後,會把分組出來的數據,當位置參數,傳到視圖函數,所以視圖函數需要定義形參。

-url(r^publish/([0-9]{4})/([0-9]{2})$, views.publish),

-def publish(request,*args):   視圖函數可以這樣接收

3 有名分組

按關鍵字參數,有名分組之後,會吧分組出來的數據,當關鍵字參數,傳到視圖函數,所以視圖函數需要定義形參,形參 名字要跟分組名字對應,與順序無關

-url(r^publish/(?P<year>[0-9]{4})/(?P<mounth>[0-9]{2})/$, views.publish),

-def publish(request, mounth,year):

******有名分組和無名分組不要混用

4 反向解析

先命一個名:

  1、 無參數:url(r^publishadd133/$, views.publishadd,name=
ddd),   2、 無名分組:url(r^publishadd/([0-9]{4})/([0-9]{2})/$, views.publishadd,name=ddd),      3、有名分組:url(r^publishadd/(?P<year>[0-9]{4})/(?P<mounth>[0-9]{2})/$, views.publishadd,name=ddd), 在模板層:   1、 無參數:{% url ddd %}   2 、無名分組的:{% url ddd 2018 12 %}   3、 有名分組:{% url ddd
2018 12 %} 還可以 {% url ddd year=2018 mounth=12 %} 在視圖層:   from django.shortcuts import reverse 在視圖函數裏:   無參數:url=reverse(ddd)   無名分組:url=reverse(ddd,args=(2018,12,))   有名分組:url=reverse(ddd,args=(2018,12,)) 還可以 url=reverse(ddd,kwargs={year:2018,mounth:12}) 路由分發:   1、在不同的app裏創建urls.py   2、在總路由   From django.conf.urls import include   Url(‘^blog/’,include(‘blog.urls’)),   url(r^app01/,include(app01.urls)), ******重點:總路由,不能加結束符$

名稱空間:

-url(r^blog/,include(blog.urls,namespace=blog)),

子路由:url(r^publish/$, views.publish,name=test),

反向解析:

-視圖層:url = reverse(blog:test)

-模板層:{% url app01:test%}

***一般不要用***

子路由:url(r^publish/$, views.publish,name=app01_test),

偽靜態:

路由:url(r^book/(?P<id>\d+.html),views.book),

訪問:http://127.0.0.1:8000/book/4.html

路由控制