支持:

  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