美文网首页Chiawei的编程技术专辑我爱编程python学习笔记
django1.X路由的url与2.X路由path语法理解区别

django1.X路由的url与2.X路由path语法理解区别

作者: NewForMe | 来源:发表于2018-06-28 00:52 被阅读0次
    引用路径的区别:
    • 1.X: 使用的是django.conf.urls.url, django.conf.urls.include
    • 2.X: 使用的是django.urls.path, django.urls.include, django.urls.re_path
    引入正则的区别:
    • 1.X:
      下面的示例使用简单的正则表达式分组匹配(通过圆括号)来捕获URL中的值并以位置参数形式传递给视图
      在更高级的用法中,可以使用分组命名匹配的正则表达式组来捕获URL中的值并以关键字参数形式传递给视图。
      在Python的正则表达式中,分组命名正则表达式组的语法是(?P<name>pattern),其中name是组的名称,pattern是要匹配的模式。
    urlpatterns = [
        url('index-(\d+)-(\d+).html',views.index),
        url('index-(?P<article_type_id>\d+)-(?P<category_id>\d+).html',views.index)
    ]
    #url请求地址为:http://127.0.0.1:8000/index-1-1.html
    

    • 2.X:
      基本规则:
    • 使用尖括号(<>)从url中捕获值。
    • 捕获值中可以包含一个转化器类型(converter type),比如使用 <int:name> 捕获一个整数变量。若果没 有转化器,将匹配任何字符串,当然也包括了 / 字符。
    • 无需添加前导斜杠。
    urlpatterns = [
        path('index-<int:article_type_id>-<int:category_id>.html',views.index),
    ]
    #url请求地址为:http://127.0.0.1:8000/index-1-1.html
    

    在Python正则表达式中,命名式分组语法为 (?P<name>pattern) ,其中name为名称, pattern为待匹配的模式。这个与1.X的用法差不多,就是将1.X的url,改为re_path,
    例子:

    urlpatterns = [
        path('articles/2003/', views.special_case_2003),
        re_path('articles/(?P<year>[0-9]{4})/', views.year_archive),
        re_path('articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/', views.month_archive),
        re_path('articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/(?P<slug>[^/]+)/', views.article_detail),
    ]
    

    相关文章

      网友评论

        本文标题:django1.X路由的url与2.X路由path语法理解区别

        本文链接:https://www.haomeiwen.com/subject/sqewyftx.html