支持:
Django2.0于2017年12月2日发布,支持python3.x版本,移除了对于2.7版本的支持
用法:
新增了django.urls.path 函数,取代之前版本的url函数,使得阅读起来更加简洁
需要注意的是,每一条规则都需要以 / 结尾
例如:
精准匹配
path('index/', views.index, name='index') #对应的def index()
此路径即把index/索引的路由匹配到views.index函数上
参数
path('index/<int:number>', views.index, name='index') #对应的def index(number)
此路径即把index/123或者index/456一类索引的路由匹配到views.index函数上,并且用number 来接收参数,
int 表示参数的类型(Converter),支持自定义:
-
-
- str:匹配除了路径分隔符(/)之外的非空字符串,如果没有转换器,默认使用str作为转换器。
- int:匹配0及正整数。
- slug:匹配字母、数字以及横杠、下划线组成的字符串。
- uuid:匹配格式化的uuid,如 075194d3-6885-417e-a8a8-6c931e272f00。
- path:匹配任何非空字符串,包含了路径分隔符(/)
-
默认值参数
path('index/<int:number>', views.index, name='index') path('index/', views.index, name='index') #对应的def index(number= 5)
此路径即把index/123或者index一类索引的路由匹配到views.index函数上,并且用number 来接收参数,并且具有默认值10
正则匹配:
Django2.0 对于正则处理,使用的是django.urls.re_path函数
re_path('books/(?P<year>\d{4})/(?P<month>\d{1,2})/', views.books) #对应的def books(year,month)
路由分发:
有时候,路由太多或者功能需要分块,就需要用到路由分发功能。你需要建立一个同urls 文件格式的文件在你的功能app下,
然后在主urls使用django.urls.include
path('app01/', include('app01.urls')) path('app02/', include('app02.urls'))
然后,就可以通过app01/。。。 来访问具体的路由了
别名
我们注意到,有些path 中,可以使用name指定一个名字,例如
path('index/<int:number>', views.index, name='index')
其中,name参数代表为这段url 来进行重新命名,我们对这个的使用方式为
1.视图model中(reverse 反向解析)
from django.urls import reverse reverse('index') reverse('index' ,args=(1,))
2.模板html 的用法
{% url '别名' %} {% url '别名' id %}
转自:https://www.cnblogs.com/slqhone/p/13462066.html