1. 无名分组
1.1 介绍
在路由匹配的时候给某段正则表达式加了括号。
匹配的时候,会将括号内正则表达式,匹配到的内容,当做位置参数,传递给对应的,视图函数
1.2 url
url(r'^test/(\d+)/',views.test)
1.3 view
def index(request,args):
return HttpResponse('')
2. 有名分组
2.1 介绍
给一段正则表达式起一个别名。
匹配的时候,会将括号内正则表达式,匹配到的内容,当做关键字参数,传递给对应的,视图函数
2.2 url
url(r'^test/(?P<year>\d+)/',views.test)
2.3 view
def index(request,year):
...
ps. 补充:
无名有名能否混合使用 >>> 不能!!!
url(r'^test/(\d+)/(?P<year>\d+)/', views.test),
虽然不能混合使用 但是同一种命名方式 可以使用多个
url(r'^test/(\d+)/(\d+)/',views.test),
url(r'^test/(?P<xxx>\d+)/(?P<year>\d+)/',views.test),
# 反向解析的本质:先给路由起一个别名,然后,通过一些方法去解析别名,可以得到这个别名对应的路由地址
无名分组反向解析
# 无名分组匹配到的内容以位置参数传给后面额视图函数
url(r'index/(\d+)/(\d+)/', view.index, name='index')
# 前端解析
{% url 'index' 123 234 %}
# 后端解析
reverse('index', args=(1, 2))
有名分组反向解析
# 有名分组匹配到的内容以关键字参数传给后面的视图函数
url(r'index/(?P<year>\d+)/(?P<month>\d+)/', view.index, name='index')
# 前端解析
{% url 'index' year=123 month=234 %}
# 后端解析
reverse('index', kwargs={'year':2023})
'''在django1中得url中使用,django2中用的是path,path不支持正则表达式,但是支持5种转换器,re_path就类似于url'''
3. 反向解析
3.1 普通反向解析
通过一些方法 能够得到一个结果 该结果可以访问到对应的url
使用方式
先给路由与视图函数对应关系 起一个名字
url(r'^testadd/',views.testadd,name='add')
前端解析
{% url 'add' %}
后端解析
from django.shortcuts import render,HttpResponse,redirect,reverse
reverse('add')
3.2 无名分组反向解析
# 无名分组反向解析
url(r'^testadd/(\d+)/',views.testadd,name='add')
前端解析
{% url 'add' 1 %}
后端解析
reverse('add',args=(12,))
3.3 有名分组反向解析
# 有名分组反向解析
url(r'^testadd/(?P<year>\d+)/',views.testadd,name='add')
前端解析
{% url 'add' 1 %} # 推荐使用
{% url 'add' year= 1 %} # 标准的
后端解析
reverse('add',args=(12,))
reverse('add',kwargs={'year':12})