Django的PATH路径转换器

news2024/11/24 8:48:24

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

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

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

在Django框架中,默认内置了一组PATH路径转换器,具体介绍如下:

  • str类型转换器:匹配任何非空字符串,但是不包含特殊字符“/”;如果设计人员没有指定专门的转换器,默认就是使用该转换器。
  • int类型转换器:匹配0和正整数,返回一个int类型。
  • slug类型转换器:可理解为注释、后缀、附属等概念,主要是URL链接中置于最后一部分的解释性字符。该转换器匹配任何ASCII字符以及连接符和下画线,如【代码4-2】中的字符串“django-url-pattern”。
  • uuid类型转换器:匹配一个UUID格式的对象。为了防止冲突,规定必须使用中画线(-),并且所有字母必须小写,例如,下面这个UUID字符串01234567-8900-aacc-a8a8-987654321000将返回一个uuid对象。
  • path类型转换器:匹配任何非空字符串,重点是可以包含路径分隔符(/);这个转换器适用于匹配整个URL链接,而不是一段一段的URL字符串。同时,要注意区分path转换器和path()方法二者之间的区别。对于更复杂的匹配需求,设计人员可能就需要自定义path转换器了。其实,path转换器就是一个类,主要包含下面的成员和属性:
  1. 类属性regex:一个字符串形式的正则表达式属性。
  2. to_python(self, value)方法:一个用来将匹配到的字符串转换为目标数据类型并传递给视图函数的方法。注意,如果转换失败,则该方法必须弹出ValueError异常。
  3. to_url(self, value)方法:一个将Python数据类型转换为一段URL地址的方法,为to_python(self, value)方法的反向操作。注意,如果转换失败,则该方法也会弹出ValueError异常。

下面介绍一个关于PATH路径转换器的代码实例。

首先,新建一个用于PATH路径转换的Python文件,定义一个用于转换4位正整数年份数值的类FourDigitYearConverter,具体代码如下:

【代码4-3】(详见本书配套下载资源中的源代码中的urlconverter.py)

01  class FourDigitYearConverter:
02      regex = '[0-9]{4}'
03  
04      def to_python(self, value):
05          return int(value)
06  
07      def to_url(self, value):
08          return '%04d' % value

【代码分析】

在第02行代码定义了类属性regex,格式为4位整数的正则表达式。

在第04、05行代码定义了类方法to_python(),用于将4位整数(value)转换为Python数据类型。

在第07、08行代码定义了类方法to_url(),用于将Python数据类型转换为URL地址,并进行了格式化操作(使用数字“0”从左填充的4位整数)。

然后,基于【代码4-3】进行修改,在URLconf模块中使用register_converter()方法进行注册,具体代码如下:

【代码4-4】(urlconf.py)

01  from django.urls import path
02  
03  from . import urlconverter, views 
04  
05  register_converter(urlconverter.FourDigitYearConverter, 'yyyy')
06  
07  urlpatterns = [
08      path('articles/2023/', views.special_case_2023),
09      path('articles/<yyyy:year>/', views.year_archive),
10      path('articles/<yyyy:year>/<int:month>/', views.month_archive),
11      path('articles/<yyyy:year>/<int:month>/<slug:slug>/', views.article_detail),
12      ...
13  ]

【代码分析】

在第05行代码中,通过register_converter()方法注册了一个“yyyy”类型。

第07~13行代码定义了urlpatterns数组列表。其中,第09行、第10行和第11行中关于年份的类型使用了“yyyy”进行定义。

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1794802.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

win10下,python3.7安装xlrd和xlwt

win10下&#xff0c;执行import xlwt&#xff0c;结果报错 No module named xlwt。 原因&#xff1a;使用的python没有安装xlwt包。 解决方法&#xff1a; 1&#xff09;打开一个命令窗口&#xff0c;执行&#xff1a;where python&#xff0c;可以看到使用的python路径及版…

保利威观看页SDK 官方VUE开源项目 polyv-web-live-watch-sdk

一、安装:node、npm 二、下载源码 polyv-web-live-watch-sdk: 保利威直播观看 SDK 官方文档:保利威帮助中心 进入项目根目录 npm ci #安装依赖,如果 CI 失败,请试一下 npm ci --no-cache --registry=https://registry.npmmirror.com/ npm run dev #启动项目 执行完成后…

【启明智显技术分享】sigmastar ssd202d双网口开发板多串口调试说明

提示&#xff1a;作为Espressif&#xff08;乐鑫科技&#xff09;大中华区合作伙伴及sigmastar&#xff08;厦门星宸&#xff09;VAD合作伙伴&#xff0c;我们不仅用心整理了你在开发过程中可能会遇到的问题以及快速上手的简明教程供开发小伙伴参考。同时也用心整理了乐鑫及星宸…

Hyper-SD: diffusion实时出图,一步搞定,字节出品

Hyper-SD: diffusion实时出图&#xff0c;一步搞定&#xff0c;字节出品 先看效果 Real-Time Generation Demo of Hyper-SD. Abstract 近来&#xff0c;一系列面向扩散模型&#xff08;Diffusion Models&#xff0c;DM&#xff09;的迭代紧凑式传播推断算法陆续出现&#xf…

Python使用trule库画小猪佩奇

在这篇博客中&#xff0c;我将向大家展示如何使用Python的Turtle模块来绘制一个可爱的小猪佩奇。这个项目不仅可以帮助你熟悉Turtle绘图&#xff0c;还可以让你在编程的过程中享受到绘画的乐趣。 并非百分百原创&#xff0c;有部分参考其他博主&#xff0c;请理性对待&#xff…

安防视频融合汇聚平台EasyCVR如何实现视频画面自定义标签?

安防视频融合汇聚平台EasyCVR兼容性强&#xff0c;可支持Windows系统、Linux系统以及国产化操作系统等&#xff0c;平台既具备传统安防视频监控的能力&#xff0c;也具备接入AI智能分析的能力&#xff0c;可拓展性强、视频能力灵活&#xff0c;能对外分发RTMP、RTSP、HTTP-FLV、…

最新版点微同城源码34.7+全套插件+小程序前后端

带全套插件 自己耐心点配置一下插件 可以H5可以小程序 一款专属的同城服务平台对于企业和个人而言&#xff0c;无疑是拓展业务、提升服务品质的重要一环。点微同城源码搭配全套插件&#xff0c;以及完善的小程序前后端&#xff0c;将为您的业务发展提供强大支持 源码免费下载…

武汉科技大学,计算机考研全面改考408,24计算机专硕复试线仅298分!武汉科技大学计算机考研考情分析!

武汉科技大学&#xff08;Wuhan University of Science and Technology&#xff09;简称“武科大”&#xff0c;坐落于湖北省武汉市&#xff0c;是湖北省人民政府、教育部和六家国家特大型企业共建高校&#xff0c;是湖北省“双一流”建设重点高校&#xff0c;入选国家“中西部…

Linux命令篇(六):vi/vim专项

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝您生活愉快&#xff01; 文章目录 一、什么是vim二…

[已解决]FinalShell连接CentOS失败:java.net.UnknownHostException: centos

报错&#xff1a; 解决办法&#xff1a; 1.查看Windows:C:\Windows\System32\drivers\etc\ 2.拷贝hosts文件&#xff0c;用记事本打开hosts文件 3.添加主机名centos及对应IP地址&#xff0c;保存并粘贴覆盖C:\Windows\System32\drivers\etc\中的hosts文件 4.打开cmd命令窗口输…

怎么获取二维码的图片链接?在线二维码解码的使用方法

随着二维码在日常生活中被广泛的应用&#xff0c;有很多的内容都会生成二维码之后&#xff0c;其他人通过扫码在手机上查看内容。但是在一些情况下二维码也会有局限性&#xff0c;当无法扫码时该怎么来获取二维码中的内容呢&#xff1f; 通过分解二维码功能&#xff0c;可以获…

git随记

git status 查看文件状态 git status -s 比较简洁的查看文件状态。如下代表此文件是新建的&#xff0c;没有被git跟踪的文件&#xff1a; $ git status -s ?? abc.txtgit add abc.txt 将abc添加到暂存区。后再次git status -s $ git status -s A abc.txtgit reset 将暂存…

C语言:详解gcc驱动程序完成编译、汇编、链接的过程

相关阅读 C语言https://blog.csdn.net/weixin_45791458/category_12423166.html?spm1001.2014.3001.5482 gcc是一个命令&#xff0c;严格意义上说&#xff0c;它只是一个驱动程序&#xff0c;而不是一个编译器。gcc负责调用GNU工具链中的预处理器、编译器、汇编器、链接器等工…

RetroMAE-文本embedding算法

1)输入文本经掩码操作后由编码器&#xff08;Encoder&#xff09;映射为隐空间中的语义向量&#xff1b;而后解码器&#xff08;Decoder&#xff09;借助语义向量将另一段独立掩码的输入文本还原为原始的输入文本 2)编码器的掩码率为15%-30%&#xff1b;解码器的掩码率为50%-70…

GlaDS缘起

题目:Modeling channelized and distributed subglacial drainage in two dimensions 近年来,冰盖表面融化与冰盖动态之间的联系及其对海平面上升的影响引起了广泛关注。特别是格陵兰冰盖的研究显示,表面融水显著影响冰川移动速度,而冰下排水系统对冰川动力学及冰川水文学…

gitlab之cicd的gitlab-runner集成-dockerfile构建环境

目录 概述离线资源docker-compose问题 docker-compose问题1问题2 gitlab-runner集成gitlab 概述 cicd引文目录是想通过dockerfile构建 maven、jdk、docker环境的 gitlab-runner 运行环境。但docker最后测试的时候有点问题&#xff0c;且最后使用 kubectl 时有麻烦&#xff0c;所…

Facechain系列: 通过代码进行推理

进行推理时&#xff0c;需要编辑run_inference.py中的代码。为了避免人物肖像的版权问题&#xff0c;文章中使用的图片不是由FaceChain实际生成的图片&#xff0c;特此说明。 1. 以下代码适用于Linux系统&#xff0c;如果希望在Windows系统中运行&#xff0c; folder_path f…

新加坡裸机云站群服务器稳定性怎么样

新加坡裸机云站群服务器的稳定性在云计算领域备受关注&#xff0c;这得益于其卓越的硬件配置、先进的数据中心设计、优质的网络连接以及严格的管理措施。以下是对新加坡裸机云站群服务器稳定性的详细科普&#xff1a; 一、硬件与配置 新加坡裸机云站群服务器通常采用高性能的物…

matrix-breakout-2-morpheus vulnhub靶场

端口扫描 80 81 需要用户名密码登录 目录扫描 robots.txt 妹用 找不到利用点&#xff0c;换个扫描器再扫 发现新的文件 graffiti.txt graffiti.php 输入的数据Post后会回显到页面上 抓包看看&#xff0c;居然直接传文件路径 发现我们post的数据被写入了graffiti.…

搜维尔科技:【研究】Xsens Link对跑步运动学的可靠性

内容类型&#xff1a;客户案例 产品&#xff1a;MVN Link 产品用例&#xff1a;教育科研 应用领域&#xff1a;运动分析 在实验室环境之外分析现实环境中人体运动的能力正变得越来越重要。各个学科的研究人员&#xff0c;尤其是运动科学和生物力学的研究人员&a…