Django使用正则表达式

本书1-7章样章及配套资源下载链接:

https://pan.baidu.com/s/1OGmhHxEMf2ZdozkUnDkAkA?pwd=nanc 

源码、PPT课件、教学视频等,可以从前言给出的下载信息下载,大家可以评估一下。

在Django框架的新版本(v2.0 +)中,URLconf模块虽然更改了配置方式,但它依然可以对老版本进行兼容,兼容的办法就是使用re_path()方法。

这个re_path()方法本质上就是以前的url()方法,只不过导入的位置变了。另外,re_path()方法与path()方法有以下两个不同点:

  • re_path()方法捕获URL地址中的参数使用的是正则表达式方式,语法是(?P<name>pattern)格式,其中的< name>是组名,pattern是要匹配的模式。
  • re_path()方法传递给视图的所有参数都是字符串类型,而不像path()方法那样可以指定转换成某种类型,因此在视图中接收参数时一定要小心。

使用正则表达式进行匹配的示例代码如下:

【代码4-5】

01  from django.urls import path, re_path
02  
03  from . import views
04  
05  urlpatterns = [
06      path('articles/2023/', views.special_case_2023),
07      re_path(
08          r'^articles/(?P<year>[0-9]{4})/$', views.year_archive
09      ),
10      re_path(
11          r'^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/$', views.month_archive
12      ),
13      re_path(
14      r'^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/(?P<slug>[\w-]+)/$',views.article_detail
15      ),
16  ]

【代码分析】

在第07~09行、第10~12行和第13~15行代码中,re_path()方法使用的就是正则表达式方式。

在第08行、第11行和第14行代码中,<year>组名严格匹配4位整数(如12345这样的整数是无法匹配的),这是由正则表达式?P<year>[0-9]{4})/$的规则所决定的。

另外,正则表达式?P<year>[0-9]{4})/$也可以简写成未命名的形式[0-9]{4},但为了避免歧义,不建议这么做。

本文节选自《Django 5企业级Web应用开发实战(视频教学版)》,获出版社和作者授权发布。

《Django 5企业级Web应用开发实战(视频教学版)》(王金柱)【摘要 书评 试读】- 京东图书 (jd.com)

相关推荐

  1. Hive表达式使用

    2024-06-06 01:40:08       23 阅读
  2. 表达式中元字符的使用

    2024-06-06 01:40:08       21 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-06 01:40:08       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-06 01:40:08       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-06 01:40:08       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-06 01:40:08       20 阅读

热门阅读

  1. 生态学pdf电子书

    2024-06-06 01:40:08       7 阅读
  2. 【C语言】for循环

    2024-06-06 01:40:08       10 阅读
  3. 010.编译指纹浏览器-绕过常见无头检测

    2024-06-06 01:40:08       6 阅读
  4. bug清单问题

    2024-06-06 01:40:08       7 阅读
  5. electron录制工具-系统托盘

    2024-06-06 01:40:08       9 阅读
  6. WPF中Ignorable

    2024-06-06 01:40:08       6 阅读
  7. 用户反馈解决方案 —— 兔小巢构建反馈功能

    2024-06-06 01:40:08       9 阅读
  8. C语言从头学16——数据类型(二)

    2024-06-06 01:40:08       7 阅读
  9. 攻击渗透思考题

    2024-06-06 01:40:08       10 阅读
  10. kafkastream

    2024-06-06 01:40:08       6 阅读
  11. #经验分享#学习方法

    2024-06-06 01:40:08       10 阅读
  12. 资源目录与云SSO

    2024-06-06 01:40:08       7 阅读