路由控制
阿新 • • 發佈:2018-11-08
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
路由控制