Django动态路由

因为视图函数也是普通的Python函数,所以,除了Django规定的第一个HttpRequest参数之外,还可以定义额外的参数。那么对视图函数的其他参数进行传参就需要使用到动态路由的感念了,即URL不是固定的,在URL中包括了传递给视图的参数变量。

使用path配置动态路由

path方法定义于django/urls/conf.py文件中,在使用之前需要先导入。

配置动态路由也需要用到path函数,只是URL配置的语法上有些不同。如:

path('App/<int:a1>/'views.fn)

path中定义的类似<int:year>规则会捕获到URL中的值,映射到视图中的同名参数year,并根据指定的转换器将参数值转换为对应的类型,这里对应int(大于等于0的数)。之所以需要定义转换器,有两个原因:第一是可以将捕获到的字符值转换为对应的类型;第二是对URL中传值的一种限制,避免视图处理出错。

除了int之外,Django还提供了其他的转换器。

  • str:匹配除了“/”(路径分隔符)之外的非空字符串,它是默认的转换器,即如果没有指定转换器,例如<day>,那么,相当于<str:day>。
  • slug:匹配字母、数字、连字符和下画线组成的字符串。
  • uuid:匹配格式化的UUID(通用唯一识别码),并将捕获到的参数值转换为UUID实例对象。
  • path:匹配任意的非空字符串,包含了路径分隔符。

正则表达式

匹配URL中,同样也支持使用正则表达式进行匹配。这个时候则需要导入re_path方法,定义于django/urls/conf.py文件中。

Python的正则表达式中命名分组的语法为:(?P<name>pattern),其中name是分组名,pattern是匹配模式。引用分组可以使用分组名,也可以使用分组编号。如:

re_path('user/(?P<a1>[0-9]+)/', views.re)

 匹配模式与正则表达式的写法一样,可以查看下面链接

正则表达式_HHYZBC的博客-CSDN博客icon-default.png?t=M3K6https://blog.csdn.net/HHYZBC/article/details/124428612使用re_path的理由是path方法和转换器都不能满足需求。比如对URL中的某个数字或者字母个个数有特别要求时,

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

HHYZBC

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

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

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

打赏作者

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

抵扣说明:

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

余额充值