[django]路由变量与正则表达式

简介: [django]路由变量与正则表达式

示例:

urlpatterns = [
    path('detail.<int:id>.html', detailView, name='detail'),
]

路由变量的类型

示例路由配置了路由变量 id,通过动态改变路由变量id的数值就能生成相应的详情页。

django的路由变量分为字符类型、整型、slug和uuid。说明如下:

  • 字符类型:匹配任何非空字符串,但不含斜杠,如果没有指定类型,默认就使用该类型。
  • 整型:匹配0和正整数
  • slug:可以理解为注释、后缀或附属等概念,常作为路由的解释性字符。比如网页的标题为“13岁的孩子”,其路由地址可以是设置为“13-sui-de-hai-zi”
  • uuid:匹配一个uuid格式的对象。为了防止冲突,规定必须使用“-”短横杠,并且所有字母为小写。例如:“978c098-18y238-asd12s-asd2qeasd”

在路由中,如果使用函数 path 定义路由,那么路由变量则使用变量符号“<>”定义。

可选变量

除了在路由地址中设置变量,Django还支持在路由地址外设置变量,比如在路由中添加可选变量 user:

urlpatterns = [
    path('.html', commodityView,{'user': 'admin'}, name='detail'),
]

可选变量的规则:

  • 可选变量只能以字典的形式表示
  • 设置的可选变量只能在视图函数中读取和使用
  • 可选变量必须在视图函数和参数 name 之间

正则表达式

示例:

from django.urls import re_path
urlpatterns = [
    re_path('(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/(?P<day>[0-9]{2}).html', views.mydate),
]

路由的正则表达式是由路由函数 re_path 定义的,其作用是对路由变量进行截取与判断,正则表达式是以小括号为单位的,每个小括号的前后可以使用斜杠或者其他字符将其分割与结束。

  • ?P是固定格式,字母 P 必须大写
  • <year> 是变量名
  • [0-9]{4} 是正则表达式的匹配模式,代表变量的长度为4,只允许取0-9的值。
相关文章
|
Python
django路由传参可默认为空
django路由传参可默认为空
84 0
|
3月前
|
Python SEO
Django入门到放弃之路由
Django入门到放弃之路由
如何根据文件夹中文件,生成对应名字的图片,名称一样的路径,这里用到了变量,将集合定义在外面,字符串拼接,正则表达式截取.jpg文件
如何根据文件夹中文件,生成对应名字的图片,名称一样的路径,这里用到了变量,将集合定义在外面,字符串拼接,正则表达式截取.jpg文件
|
5月前
|
JSON API 网络架构
Django REST framework视图集与路由详解:深入理解ViewSet、ModelViewSet与路由映射器
Django REST framework视图集与路由详解:深入理解ViewSet、ModelViewSet与路由映射器
|
5月前
|
存储 安全 网络协议
Django路由与会话深度探索:静态、动态路由分发,以及Cookie与Session的奥秘
Django路由与会话深度探索:静态、动态路由分发,以及Cookie与Session的奥秘
|
5月前
|
API 网络架构 Python
在django使用视图集和路由集
【6月更文挑战第11天】本文介绍Viewsets是Django REST框架中将多个视图逻辑整合到单个类的工具,减少了重复代码。当项目API变得复杂且有重复模式时,考虑使用它们;否则,保持视图和URL模式的简洁性。
39 3
|
5月前
|
API 数据库 网络架构
在django中应用视图和路由集
【6月更文挑战第10天】 本文介绍viewsets`和`Routers`是Django REST framework中用于简化API视图和路由的工具。它们提供了一个抽象层,允许用更少的代码替代多个相关视图,并能自动生成URL。定义`UserList`和`UserDetail`视图集,分别用于列表和详情展示。
26 3
|
5月前
|
缓存 JSON API
在django项目中使用装饰器管理路由
【6月更文挑战第12天】本文介绍了Python装饰器在API管理中的应用,包括用于延迟计算、缓存和转换函数的装饰器。实践中,以Django Rest Framework为例,演示了如何使用装饰器定义GET、POST、PUT和DELETE请求的视
55 1
|
11月前
|
前端开发 网络架构 Python
django实现动态路由的简单方法
django实现动态路由的简单方法
127 1
|
5月前
|
Python
Django——路由
Django——路由