[django] 2.x路由系统匹配path

path

django2.x路由系统已经替换成下面的写法(官方文档):

url的路由表示用path和re_path代替,模块的导入由django1.x版本的:

from django.conf.urls import url,include

变成现在的Django2.x中的:

from django.urls import path, re_path, include:

匹配模式

1、精确字符串格式:

path('articles/2017/', views.articles)

一个精确URL匹配一个操作函数;最简单的形式,适合对静态URL的响应;URL字符串不以“/”开头,但要以“/”结尾;

2、Django的转换格式: <类型:变量名>,articles/<int:year>/

from django.urls import path
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模版,匹配URL同时在其中获得一批变量作为参数;是一种常用形式,目的是通过URL进行参数获取和传递;

转换格式类型:

Str		匹配除分隔符(/)外的非空字符,默认类型<year>等价于<str:year>
Int		匹配0和正整数
Slug	匹配字母、数字、横杠、下划线组成的字符串,str的子集
Uuid	匹配格式化的UUID,如075194d3-6885-417e-a8a8-6c931e272f00
path	匹配任何非空字符串,包括路径分隔符,是全集

3、 正则表达式格式:
在正则表达式中定义变量,需要使用圆括号括起来。这个参数是有名字的,那么需要使用(?P<参数的名字>)。然后在后面添加正则表达式的规则。

例如:

re_path(r"^list/(?P<year>\d{4})/$",views.article_list),
re_path(r"^list/(?P<month>\d{2})/$",views.article_list_month)articles/(?p<year>[0-9]{4})/

借助正则表达式丰富语法表达一类URL(而不是一个);可以通过<>提取变量作为处理函数的参数,高级用法;使用该方法时,前面不能使用path()函数,必须使用re_path()函数;表达的全部是str格式,不能是其他类型。

两种形式:
不提取参数,比如re_path(articles/([0-9]{4}/,表示四位数字,每一个数字都是0到9的任意数字;
提取参数,命名形式(?P<name>pattern),比如:
re_path(articles/(?P<year>[0-9]{4})/,

将正则表达式提取的四位数字,每一个数字都是0到9的任意数字命名为year,

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Moke丶青

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值