8.url路由
1、單一路由對應
url(r‘^index/$‘, views.index),
這裏要註意的是,/$ 表示只有只/結尾的才有效,如果把$符號去掉的話,只要是以index/開頭都會匹配到這個url。
2、基於正則的路由
url(r‘^index/(\d*)‘, views.index),
url(r‘^manage/(?P<name>\w*)/(?P<id>\d*)‘, views.manage),
3、添加額外的參數
url(r‘^manage/(?P<name>\w*)‘, views.manage,{‘id‘:333}),
4、為路由映射設置名稱
url(r‘^home‘, views.home, name=‘h1‘),
url(r‘^index/(\d*)‘, views.index, name=‘h2‘),
設置名稱之後,可以在不同的地方調用,如:
模板中使用生成URL {% url ‘h2‘ 2012 %}
函數中使用生成URL reverse(‘h2‘, args=(2012,)) 路徑:django.urls.reverse,必須用django提供的reverse方法。
5、根據app對路由規則進行分類
在主url.py中進行設置
url(r‘^org/‘, include(‘organization.urls‘,namespace=‘org‘)),
organization.urls表示文件名,也就是說只要是org這個域裏的url我都到organization.urls這個文件去找。比如 www.127.0.0.1:8000/org/list/ 等
6、命名空間
a. project.urls.py
from django.conf.urls import url,include
urlpatterns = [
url(r‘^a/‘, include(‘app01.urls‘, namespace=‘author-polls‘)),
url(r‘^b/‘, include(‘app01.urls‘, namespace=‘publisher-polls‘)),
]
以上定義帶命名空間的url之後,使用name生成URL時候,應該如下:
v = reverse(‘author-polls:detail‘, kwargs={‘pk‘:11})
{% url ‘author-polls:detail‘ pk=12 pp=99 %}
8.url路由