一、路由基本格式
from django.conf.urls import url urlpatterns = [ url(正则表达式, views视图,参数,别名), ]
参数说明:
- 正则表达式:一个正则表达式字符串
- views视图:一个可调用对象,通常为一个视图函数
- 参数:可选的要传递给视图函数的默认参数(字典形式)
- 别名:一个可选的name参数
二、获取url中的值
from django.conf.urls import url from . import views urlpatterns = [ url(r'^articles/2003/$', views.special_case_2003), url(r'^articles/([0-9]{4})/$', views.year_archive), url(r'^articles/([0-9]{4})/([0-9]{2})/$', views.month_archive), url(r'^articles/([0-9]{4})/([0-9]{2})/([0-9]+)/$', views.article_detail), ]
加上括号即可获取值,注意在接受的view方法添加接收参数
三、URL命名与反向解析
1、命名
url(r'^pre/$', views.press_list,name='press_list'),
分组:
url(r'^home/([0-9]{4})/([0-9]{2})/$', views.home,name='home'),
命名分组
url(r'^home/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/$', views.home,name='home'),
2、反向解析
(1)在视图中应用
from django.urls import reverse
reverse('press_list') ——》 '/press_list/'
分组:reverse('home',args=('2008','09')) ——》'/app01/home/2008/09/'
命名分组:
reverse('home',args=('2008','09')) ——》'/app01/home/2008/09/'
reverse('home',kwargs={'year':'2018','month':'10'})
(2)在模板中应用
{% url 'press_list' %} ——》 '/press_list/' '/pre/'
分组:
{% url 'home' '2009' '10' %} ——》'/app01/home/2008/10/'
命名分组:
{% url 'home' '2008' '10' %} ——》'/app01/home/2008/10/'
{% url 'home' month='10' year='2018' %} ——》'/app01/home/2018/10/'
3、namespace
url(r'app02/', include('app02.urls',namespace='app02')),
url(r'app01/',include('app01.urls',namespace='app01')),
reverse('app01:home',kwargs={'year':'2018','month':'10'})
reverse('app02:home',kwargs={'year':'2018','month':'10'})
{% url 'app02:home' '2018' '10' %}