django路由的路径参数-参数类型
在路由路径中可以传递参数,和指定参数的类型
路径参数类型转换
- str 匹配除路径分隔符'/'之外的任何非空字符串。如果表达式中不包含转换器
,默认就是str - int 匹配0或任何正整数。返回一个int
- slug 匹配任何由ascii字符或数字组成的slug字符串,加上连字符和下划线。
- uuid 匹配格式化的uuid。
- path 匹配任何非空字符串,包括路径分隔符。可以匹配完整的url路径。
路由传递参数,pk名称要和定义的函数参数名称一致
urlpatterns = [
path("detail/int:pk", views.detail),
path("list/int:year/int:month/",views.project_list)]
re_path
re_path(route, view, kwargs=None, name=None)
返回一个对象,表示一条路由个规则包含在urlpatterns
- route 一个字符串,表示一个正则表达式,用来匹配url
- view一个视图
- kwargs一个字典,需要传入的额外参数
- name url的命令
当进行匹配时,从正则表达式中捕获的组会被传递给视图。如果组是命令的,则作为命名的参数,否则作为位置参数。值以字符串的形式进行传递,不进行任何类型转换。
python中,命名正则表达式分组的语法
(?P<name>pattern)
其中,name是组的名字,pattern是正则表达式。
re_path(r'^detail/(\d+)/$', views.detail)
re_path(r"list/(?P<year>[0-9]{4})/(?P<month>[1-9]|1[0-2])/", views.project_list, name="list")