1. 程式人生 > >$Django-路由層(有,無名分組、反向解析、總路由分發、名稱空間、偽靜態)

$Django-路由層(有,無名分組、反向解析、總路由分發、名稱空間、偽靜態)

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