$Django-路由層(有,無名分組、反向解析、總路由分發、名稱空間、偽靜態)
阿新 • • 發佈:2018-11-07
1 簡單配置
-第一個引數是正則表示式(如果要精準匹配:'^publish/$')
-第二個引數是檢視函式(不要加括號)
-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' foo.id %}
-3 有名分組:{% url 'ddd' foo.year foo.mounth %} 還可以 {% url 'ddd' year=foo.year mounth=foo.mounth %}
-在檢視層:
from django.shortcuts import reverse
在檢視函式裡:
1 無引數:url=reverse('ddd')
1 無名分組:url=reverse('ddd',args=(2018,12,))
1 有名分組:url=reverse('ddd',args=(2018,12,)) 還可以 url=reverse('ddd',kwargs={'year':2018,'mounth':12})
5 路由分發
1 在不同的app裡建立urls.py
2 在總路由
-from django.conf.urls import include
-url(r'^blog/',include('blog.urls')),
-url(r'^app01/',include('app01.urls')),
3 在不同的app的urls裡配置路由關係
***重點***總路由,有子路由的 不能加結束符$
6 名稱空間
-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'),
7 偽靜態
-路由:url(r'^book/(?P<id>\d+.html)',views.book),
-訪問:http://127.0.0.1:8000/book/4.html