django2 url配置,path() 和 re_path()用法

path() 

文档实例:

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),
]

注意:

  • 要从URL中取值,使用尖括号。
  • 捕获的值可以选择性地包含转换器类型。或者,使用<int:name>来捕获整型参数。如果不包含转换器,则替换为外部/的任何字符。
  • 这里不需要添加反斜杠,因为每个URL都有。例如,应该是articles而不是/articles

一些请求的例子:

  • /articles/2005/03/会匹配URL列表中的第三项。Django会调用函数。views.month_archive(request, year=2005, month=3)
  • /articles/2003/会匹配列表中的第一个模式,而不是第二个,因为这些模式是按顺序测试的,而第一个是第一个通过的测试。随意利用命令来插入类似这样的特殊情况。在这里,Django将调用该函数 views.special_case_2003(request)
  • /articles/2003 不会与任何这些模式匹配,因为每种模式都要求URL以斜杠结尾。
  • /articles/2003/03/building-a-django-site/会匹配URL列表中的最后一项。Django会调用函数。views.article_detail(request, year=2003, month=3, slug="building-a-django-site")

下面的路径转换器在默认情况下是有效的:

  • str-匹配除'/'之外的非空字符串。如果表达式内不包含转换器,则替换匹配字符串。
  • int-匹配0或任何正整数。返回一个int。
  • slug-匹配任意由ASCII字母或数字以及连字符和下划线组成的短标签building-your-1st-django-site
  • uuid-匹配一个格式化的UUID。为了防止多个URL映射到同一个页面,必须包含破折号和字符都为小写。例如,075194d3-6885-417e-a8a8-6c931e272f00。返回一个UUID实例。
  • path-匹配任何非空字符串,包括路径分隔符 '/'。这样,您就可以匹配完整的URL路径,而不是像一样匹配URL路径的一部分str
比如要匹配一个视图中的函数路由,该函数有两个形参:

def test(request, test_id):
    pass

对应配置:
urlpatterns = [
    path('test/<int:test_id>/', views.test),

]

第一个request是默认的,那么路径自动匹配该函数的第二个形参,
匹配格式:<int:test_id>,并返回一个正整数或零值。

re_path()

如果遇上路径和转换器语法都不足以定义的URL模式,那么就需要使用正则表达式,这时候就需要使用re_path(),而非path()。

from django.urls import re_path

在Python正则表达式中,命名正则表达式组的语法是(?P<name>pattern),组name的名称,并且 pattern是要匹配的模式。

还是以上图圈中的部分为例,也是可以用正则表达式来写的。如下:

1 re_path(r'^(\d+)/$',views.peopleList,name='peopleList'),
这样也是可以匹配到views视图中的peopleList函数的形参的。

所以这两种使用方式在使用上根据实际情况自行使用。

注意:在二级路由(也即app的urls文件中),在urlpatterns后,应该加上app_name='app_name(你的app名称)'。

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值