示例:
urlpatterns = [ path('detail.<int:id>.html', detailView, name='detail'), ]
路由变量的类型
示例路由配置了路由变量 id
,通过动态改变路由变量id的数值就能生成相应的详情页。
django的路由变量分为字符类型、整型、slug和uuid。说明如下:
- 字符类型:匹配任何非空字符串,但不含斜杠,如果没有指定类型,默认就使用该类型。
- 整型:匹配0和正整数
- slug:可以理解为注释、后缀或附属等概念,常作为路由的解释性字符。比如网页的标题为“13岁的孩子”,其路由地址可以是设置为“13-sui-de-hai-zi”
- uuid:匹配一个uuid格式的对象。为了防止冲突,规定必须使用“-”短横杠,并且所有字母为小写。例如:“978c098-18y238-asd12s-asd2qeasd”
在路由中,如果使用函数 path
定义路由,那么路由变量则使用变量符号“<>
”定义。
可选变量
除了在路由地址中设置变量,Django还支持在路由地址外设置变量,比如在路由中添加可选变量 user:
urlpatterns = [ path('.html', commodityView,{'user': 'admin'}, name='detail'), ]
可选变量的规则:
- 可选变量只能以字典的形式表示
- 设置的可选变量只能在视图函数中读取和使用
- 可选变量必须在视图函数和参数 name 之间
正则表达式
示例:
from django.urls import re_path urlpatterns = [ re_path('(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/(?P<day>[0-9]{2}).html', views.mydate), ]
路由的正则表达式是由路由函数 re_path
定义的,其作用是对路由变量进行截取与判断,正则表达式是以小括号为单位的,每个小括号的前后可以使用斜杠或者其他字符将其分割与结束。
?P
是固定格式,字母P
必须大写<year>
是变量名[0-9]{4}
是正则表达式的匹配模式,代表变量的长度为4,只允许取0-9的值。