1. 程式人生 > >django之路由層

django之路由層

一,簡單配置:

url是一個內建的函式,裡面需要四個引數,後面兩個現在還不涉及,先簡單介紹前兩個

第一個引數是正則表示式(如果要精準匹配:'^publish/$')

第二個引數是檢視函式(不需要加括號)

例如:-url(r'^admin/', admin.site.urls),

二,無名分組(在正則匹配中分組)

1,按位置傳參

2,分組之後,會把分組出來的資料,當位置引數,傳到檢視函式,所以檢視函式需要定義形參,來接收傳過來的引數

3,-url(r'^publish/([0-9]{4})/([0-9]{2})$', views.publish),    -def publish(request,*args):   檢視函式可以這樣接收

三,有名分組(在正則匹配中定義有名分組)

1,按關鍵字傳參

2,分組之後,會把分組出來的資料,當關鍵字引數,傳到檢視函式,所以檢視函式需要定義形參,形參的名字要跟分組的名字對應,與順序無關

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

  def publish(request,month,year):

注意:有名分組和無名分組不要混用

四,反向解析:

1,先命名,在urls中

無引數:url(r'^publishadd/$',views.publish,name='add')
無名分組:url(r'^publishadd/([0,9]{4})/$',views.publish,name='add')
有名分組:url(r'^publishadd/(?P<year>[0,9]{4})/(?P<mounth>[0-9]{2})/$',views.publish,name='add')

2,在模板層

無引數:{% url 'add' %}
無名分組:{% url 'add' 2018 12 %}
有名分組:{% url 'ddd' 2018 12 %}  還可以 {% url 'ddd' year=2018 mounth=12 %}

3,在檢視層

from django.shortcuts import reverse
無引數:url=reverse('add')
無名分組:url=reverse('add',args=(2018,12,))
有名分組:url=reverse('add',args(2018,12,)) 還可以 url=reverse('add',kwargs={'year':2018,'mounth':12})

五,路由分發

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裡配置路由關係

注意:總路由,不能加結束符

六,名稱空間

url(r'^blog/',include('blog.urls',namespase='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