urlpatterns
变量的语法urlpatterns
应该是path()
和/或re_path()
实例的Python列表。html
ROOT_URLCONF
设置的值,可是若是传入的HttpRequest
对象具备urlconf
属性(由中间件设置)那么ROOT_URLCONF
的设置将被其替换。urlpatterns
。 它应该是django.urls.path()
或者django.urls.re_path()
实例的Python列表。
path 是新的方法,re_path方法和原来的url用法一致,使用正则表达式
代码:
from django.urls import path
from . import views
urlpatterns = [
path('articles/2003/', views.special_case_2003),
path('articles/<int:year>/', views.year_archive),
path('articles/<int:year>/<int:month>/', views.month_archive),
path('articles/<int:year>/<int:month>/<slug:slug>/', views.article_detail),
]
变化:python
不在使用url函数,转而使用path转换器
正则表达式
直接在url中表示捕获的参数类型,django
提取的参数会进行类型转换,不像正则表达式中都是捕获字符串函数
不以斜杠结尾则匹配不到ui
<int:name>
来捕获一个整形参数。 若是没有包含转换器, 那么除了/
字符外, 会匹配任意字符串。/articles/2005/03/
的请求将与列表中的第三个条目匹配。 Django会调用函数views.month_archive(request, year=2005, month=3)
。/articles/2003
不会匹配到任何一个模式,由于每一个模式都要求URL以斜杠结尾。
转换器类型如下路径转换器默承认用:url
str
- 匹配除了路径分隔符'/'
的任意非空字符串。 若是表达式中没有包含转换器,那么这将是默认行为。int
- 匹配0或任意正整数。 并做为 int 返回。slug
- 匹配任意的黏接字符串(slug string),这些黏接字符串是ASCII的字母或数字,词与词之间由连字符或下划线黏接组成。 例如, building-your-1st-django-site
。uuid
- 匹配一个格式化的 UUID. 为了防止多个URL映射到同一页面,必须包含多个破折号(dash),同时字母必须小写。 例如, 075194d3-6885-417e-a8a8-6c931e272f00
. 返回一个 UUID
实例。path
- 匹配包含路径分隔符 '/'
在内的任意非空字符串。 相对于str
,这容许你匹配一个完整的URL路径,而不单单是URL路径的一部分。