路由(urls)

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm=1001.2014.3001.5501

Django的URL路由流程:

l  Django查找全局urlpatterns变量(urls.py)。

l  按照先后顺序,对URL逐一匹配urlpatterns每个元素。

l  找到第一个匹配时停止查找,根据匹配结果执行对应的处理函数。

l  如果没有找到匹配或出现异常,Django进行错误处理。

Django支持三种表达格式,分别如下:

l  精确字符串格式,如“articles/2017/”。

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

l  Django的转换格式:<类型:变量名>,如“articles/<int:year>/”。

该格式是一个URL模板,在匹配URL时获得一批变量作为参数;该格式也是一种常用形式,用于通过URL获取和传递参数。

表6提供了一些格式转换类型及其说明。

表6  格式转换类型及说明

格式转换类型

说    明

str 

匹配除分隔符(/)外的非空字符,默认类型<year>等价于<str:year>

int 

匹配0和正整数

slug 

匹配字母、数字、横杠、下划线组成的字符串,str的子集

uuid 

匹配格式化的UUID,如075194d3-6885-417e-a8a8-6c931e272f00

path 

匹配任何非空字符串,包括路径分隔符,是全集

l  正则表达式格式,如“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。

注意:当网站功能较多时,可以在该功能文件夹里建一个urls.py文件,将该功能模块下的URL全部写在该文件里,但是要在全局的urls.py中使用include方法实现URL映射分发。

编写URL的三种情况如下:

l  普通URL:re_path('^index/',view.index),re_path('^home/',view.Home.as_view())

l  顺序传参:re_path(r'^detail-(\d+)-(\d+).html/',views.detail)

l  关键字传参:re_path(r'^detail-(?P<nid>\d+)-(?P<uid>\d+).html/',views.detail)

推荐使用关键字传参的路由方法,找到项目根目录的配置文件夹demo下面的urls.py,打开该文件,并添加如下代码:

from django.contrib import admin       # 引入默认后台的模块,其中包括管理界面的urls路由规则

from django.urls import path, include  # 引入urls模块中path方法

urlpatterns = [

    path('admin/', admin.site.urls),

    path('app1/',include('app1.urls'))

]

然后在app1下面创建一个urls.py文件,并在其中编写属于这个模块的url规则:

from app1 import views as app1_views

urlpatterns = [

    # 精确匹配视图

    path('articles/2003/', app1_views.special_case_2003),

    # 匹配一个整数

    path('articles/<int:year>/', app1_views.year_archive),

    # 匹配两个位置的整数

    path('articles/<int:year>/<int:month>/', app1_views.month_archive),

    # 匹配两个位置的整数和一个slug类型的字符串

    path('articles/<int:year>/<int:month>/<slug:slug>/', app1_views.article_detail),

]

如果想使用正则表达式匹配,则使用下面代码:

from django.urls import re_path

from app1 import views as views

urlpatterns = [

    # 精确匹配

    path('articles/2003/', views.special_case_2003),

    # 按照正则表达式匹配4位数字年份

    re_path(r'^articles/(?P<year>[0-9]{4})/$', views.year_archive),

    # 按照正则表达式匹配4位数字年份和2位数字月份

    re_path(r'^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/$', views.month_archive),

    # 按照正则表达式匹配4位数字年份和2位数字月份和一个至少1位的slug类型的字符串

    re_path(r'^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/(?P<slug>[\w-]+)/$', views.article_detail),

]

接下来即可通过“/app1/articles/2003/12/11/my_day”访问app1_views.article_detail这个视图方法了,效果如图25所示。

图25   访问视图方法

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Open3D 点云的体素化

目录 一、概述 1.1概念 1.2 应用场景 二、代码实现 三、实现效果 3.1原始点云 3.2体素化后点云 一、概述 1.1概念 体素化&#xff08;Voxelization&#xff09;是将三维空间数据&#xff08;例如点云&#xff09;转换为体素网格&#xff08;Voxel Grid&#xff09;的过…

2024年不可错过的12个Web程序设计语言!

Web开发行业出现以来&#xff0c;通过各种形式和渠道不断发展壮大。随着5g时代的到来&#xff0c;Web开发在移动互联网领域不断出现新的开发场景&#xff0c;也是最受欢迎的技能之一。掌握Web程序设计语言是在Web开发领域大放异彩的必要条件之一。接下来&#xff0c;即时设计选…

【Docker】容器

目录 1. 容器启动 2. 容器启动/重启/停止 3. 进入容器 4. 容器查询 5. docker 镜像的构建 方式一&#xff1a;docker 容器 commit 方式二&#xff1a;Dockerfile 定制镜像 1. 容器启动 docker run –it/-d –p/P –name imageID/name 2. 容器启动/重启/停止 docker sta…

Open3D 点云的ISS关键点提取

目录 一、概述 1.1原理 1.2应用场景 1.3算法实现步骤 二、代码实现 2.1 完整代码 2.2关键函数 2.3关键点可视化 三、实现效果 3.1原始点云 3.2提取后点云 一、概述 1.1原理 ISS&#xff08;Intrinsic Shape Signatures&#xff09;关键点提取是一种常用于三维点云的…

vue3通过vue-video-player实现视频倍速、默认全屏、拖拽进度条等功能

效果图&#xff1a; 1、场景&#xff1a; js原生的video标签在不同浏览器及不同型号手机上都展示的不一样&#xff0c;一部分没有倍速&#xff0c;一部分没有全屏等功能&#xff0c;为了统一视频播放的交互功能&#xff0c;使用vue-video-player插件来完成&#xff0c;vue-vid…

rga_mm: RGA_MMU unsupported Memory larger than 4G!解决

目录 报错完整log如下:解决方案:报错完整log如下: [ 3668.824164] rga_mm: RGA_MMU unsupported Memory larger than 4G! [ 3668.824305] rga_mm: scheduler core[4] unsupported mm_flag[0x0]! [ 3668.824320] rga_mm: rga_mm_map_buffer map dma_buf err

算法基础精选题单 动态规划(dp)(区间dp)(个人题解)

目录 前言&#xff1a; 正文&#xff1a; 题单&#xff1a;【237题】算法基础精选题单_ACM竞赛_ACM/CSP/ICPC/CCPC/比赛经验/题解/资讯_牛客竞赛OJ_牛客网 (nowcoder.com) NC50493 石子合并&#xff1a; NC50500 凸多边形的划分&#xff1a; NC235246 田忌赛马&#xff1a…

MySQL MVCC详解

目录 前言 MVCC实现原理 UndoLog版本链 ReadView MVCC是否可以解决不可重复读与幻读 隔离级别 READ UNCOMMITTED - 读未提交与脏读 READ COMMITTED - 读已提交与不可重复读 REPEATABLE READ - 可重复读与幻读 SERIALIZABLE - 串行化 小结 前言 为了提高数据库并发能力…

【Linux网络(一)初识计算机网络】

一、网络发展 1.发展背景 2.发展类型 二、网络协议 1.认识协议 2.协议分层 3.OSI七层模型 4.TCP/IP协议 三、网络传输 1.协议报头 2.局域网内的两台主机通信 3.跨网络的两台主机通信 四、网络地址 1.IP地址 2.MAC地址 一、网络发展 1.发展背景 计算机网络的发展…

12 学习总结:操作符

目录 一、操作符的分类 二、二进制和进制转换 &#xff08;一&#xff09;概念 &#xff08;二&#xff09;二进制 &#xff08;三&#xff09;进制转换 1、2进制与10进制的互换 &#xff08;1&#xff09;2进制转化10进制 &#xff08;2&#xff09;10进制转化2进制 2…

手机照片回收站无法恢复图片怎么办?2个措施,找回丢失的相册

我们的照片和视频存储在各种设备中&#xff0c;其中包括我们的智能手机&#xff0c;但有时候我们可能会不小心删除这些重要的数据。这时&#xff0c;手机照片回收站就显得尤为重要。然而&#xff0c;即使有回收站&#xff0c;我们也可能遇到一些问题&#xff0c;例如回收站中的…

Geoserver源码解读四 REST服务

文章目录 文章目录 一、概要 二、前置知识点-FreeMarker 三、前置知识点-AbstractHttpMessageConverter 3.1 描述 3.2 应用 四、前置知识点-AbstractDecorator 4.1描述 4.2 应用 五、工作空间查询解读 5.1 模板解读 5.2 请求转换器解读 一、概要 关于geoserver的r…

嘉立创EDA验证板复制下载

https://item.szlcsc.com/777208.html https://oshwhub.com/li-chuang-zhi-neng-ying-jian-bu/dc-dc在这里插入图片描述

还能这样执行命令?命令执行绕过及防护规则研究

一、引言 我是渗透工程师->很多小伙伴在做攻防实战时发现有时在命令执行的payload中穿插单双引号命令也能执行成功&#xff0c;有时却又不行。那么到底在什么条件下用什么样的方式能实现对命令的切分呢&#xff1f;其中的原理又是如何&#xff1f;有没有其他绕过方式&#…

常见的跨域场景

我们在解决一个问题的时候应该先去了解这个问题是如何产生的&#xff0c;为什么会有跨域的存在呢&#xff1f;其实&#xff0c;最终的罪魁祸首都是浏览器的同源策略&#xff0c;浏览器的同源策略限制我们只能在相同的协议、IP地址、端口号相同&#xff0c;如果有任何一个不通&a…

音视频入门基础:H.264专题(5)——FFmpeg源码中 解析NALU Header的函数分析

一、引言 FFmpeg源码中 通过h264_parse_nal_header函数将H.264码流的NALU Header解析出来。下面对h264_parse_nal_header函数进行分析。 二、h264_parse_nal_header函数定义 h264_parse_nal_header函数定义在FFmpeg源码&#xff08;下面演示的FFmpeg源码版本是5.0.3&#xff…

【Linux】进程间通信_4

文章目录 七、进程间通信1. 进程间通信分类systeam V共享内存消息队列 未完待续 七、进程间通信 1. 进程间通信分类 systeam V共享内存 进程间通信的本质就是让不同进程看到同一份资源。而systeam V是通过让不同的进程经过页表映射到同一块内存空间&#xff08;操作系统完成…

Verilog描述一个带有异步置位和异步清零的D触发器

1 带有异步置位和异步清零的D触发器的真值表&#xff1a; 2 Verilog代码描述 module DFF_SR(CLK, D, Rd, Sd, Q, QN);input CLK, D, Rd, Sd;output Q, QN;reg Q_DFF;always (posedge CLKor negedge Rd or negedge Sd)beginif(!Rd)Q_DFF < 1b0;else if(!Sd)Q_DFF < 1b1;e…

硬盘监控和分析工具:Smartctl

文章目录 1. 概述2. 安装3. 使用4. smartctl属性信息介绍 1. 概述 Smartctl&#xff08;S.M.A.R.T 自监控&#xff0c;分析和报告技术&#xff09;是类Unix系统下实施SMART任务命令行套件或工具&#xff0c;它用于打印SMART自检和错误日志&#xff0c;启用并禁用SMRAT自动检测…

永洪bi知识点

1、下拉过滤组件和下拉参数组件的区别 下拉过滤组件只能对跟他绑有相同数据集的组件进行过滤 而下拉参数组件是当你设置了筛选条件以后&#xff0c;那么所有的组件&#xff0c;不管你绑定了什么样子的数据集&#xff0c;都能起作用&#xff0c;前提是你这个组件是需要去绑定参…