Django中间件路由映射自动加/斜杠问题原因及分析

输入 http://127.0.0.1:8000/main/index/
在这里插入图片描述

输入 http://127.0.0.1:8000/main/index
在这里插入图片描述

路由定义情况

urlpatterns = [path("index/", views.index)
]

可以发现我在输入URL的index路由时,如果没有和Django定义的路由匹配规则一样的话,浏览器自动给我们加上了这一层根斜杠,然后发起了两个请求。也就是http://127.0.0.1:8000/main/index会请求一次,然后末尾加斜杠转成http://127.0.0.1:8000/main/index/
这很显然就不是浏览器做的。



原因:
通过查阅Django官方文档可以发现通用中间件 CommonMiddleware做了这个处理。因为带斜杠和不带确实是两个不同的URL,Django为了统一标准URL,会自动补全,其实也就是做了一次310状态的重定向

  • 官方解释
    在这里插入图片描述
  • 关键参数
    在这里插入图片描述

我们可以在settings中将APPEND_SLASH = False
这样将关闭附加斜杠,将会严格匹配URL,你的路由匹配规则有斜杠,你发请求就必须有,没有斜杠,你发请求的时候也必须没有,就不会给你自动处理这个重定向。

实测效果:
在这里插入图片描述
路由映射规则有斜杠,但是请求时候没有就不行

在这里插入图片描述
去掉斜杠,再次访问就行了
PS:最好用访客or无痕测试,改完settings记得重新Run


总结:
从技术层面来说,带不带斜杠其实是不同的地址,也能访问到不同的资源。但是从用户体验层面而谈,如果你让用户访问admin路由,他必然不会访问admin/,这是习惯而言,谁没事加个斜杠。所以正常来说以不带斜杠为正常情况,如果用户加了/再进行重定向将会是一个更适合用户思维的设计。但是django并不是,django的做法如上所示,你没有斜杠就会去匹配,匹配不到就会加斜杠,加斜杠匹配不到就404。

django给的建议是,你最好将URL规范化!

但是go和Java的一些框架机制似乎是更符合用户思维,有需要的话其实也可以自己改django的通用中间件。也方便

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

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

相关文章

Vim:强大的文本编辑器

文章目录 Vim:强大的文本编辑器Vim的模式命令模式常用操作光标移动文本编辑查找和替换 底行命令模式常用操作Vim的多窗口操作批量注释与去注释Vim插件推荐:vimforcpp结论 Vim:强大的文本编辑器 Vim,代表 Vi IMproved,…

如何确保软件通过SmartScreen验证,消除用户下载时的警告提示?

在当前的网络时代,各种软件应用程序深深渗透到人们的日常生活和工作中,许多企业选择自行开发应用程序以推进其业务发展。但在发布应用程序后,软件所有者经常会遇到一个挑战,即用户在下载时可能会遇到微软SmartScreen提示“此应用程…

探索HTTP协议的世界 | 从基础到高级应用,原理与实践相结合(请求篇)

从基础到高级应用,原理与实践相结合 什么是Http历代Http协议主要特点格式和URL协议内容请求行格式如下请求方法简单案例 消息报头报头域的格式HTTP消息报头类型普通报头优化方向报头(缓存)Cache-Control的选项其他相关的缓存报头 请求报头Acc…

Unity TMP Inputfield 输入框 框选 富文本 获取真实定位

一、带富文本标签的框选是什么 UGUI的InputField提供了selectionAnchorPosition和selectionFocusPosition,开始选择时的光标下标和当前光标下标 对于未添加富文本标签时,直接通过以上两个值,判断一下框选方向(前向后/后向前&…

C#Winform使用扩展方法自定义富文本框(RichTextBox)字体颜色

实现效果 调用方法 rtxtLog.AppendTextColorful(richTextBox1,DateTime.Now.ToString(), Color.Red); 完整代码如下 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using Sys…

【U8+】用友固定资产卡片拆分提示:未设置对象变量或With block变量。

【问题描述】 用友U8软件中, 操作固定资产模块,针对资产进行卡片拆分的时候, 提示:未设置对象变量或With block变量。 确定后仍然能打开卡片拆分界面,但是界面显示异常看不到拆分明细信息,并且保存后拆分结…

【Qt-Qt Creator使用技巧】

工具-Qt Creator ■ 使用技巧■ 定义触发片段■ Qt Creator 行编辑■ 代码注释■ 代码补全■ 快速给函数添加定义■ 创建书签■ 同步列输入■ 局部替换■ 源代码阅读■ 源码调试■ 使用技巧 ■ 定义触发片段 ■ Qt Creator 行编辑 shift + alt + up / down来获得多个游标。 …

导入芯片原厂SDK Mirror源码到gerrit

下载镜像代码 repo init --mirror --repo-url ssh://xx/repo.git -u ssh://xx/manifests.git -m manifest.xml repo sync 创建AOSP project 对All Project权限修改 创建repo 在刚才下载的codebase根目录执行如下命令: repo forall -c echo $REPO_PROJECT; ssh -p 29…

DOTS Instancing合批:如何针对单个渲染实体修改材质参数

最近在做DOTS的教程,由于DOTS(版本1.0.16)目前不支持角色的骨骼动画,我们是将角色的所有动画数据Baker到一个纹理里面,通过修改材质中的参数AnimBegin,AnimEnd来决定动画播放的起点和终点,材质参数AnimTime记录当前过去的动画时间。但是在做大…

CSS导读 (元素显示模式 下)

(大家好,今天我们将继续来学习CSS的相关知识,大家可以在评论区进行互动答疑哦~加油!💕) 目录 3.6 元素显示模式转换 3.7 (一个小技巧)单行文字垂直居中的代码 3.8 单行文字垂直居中的原理 3.9 小案例…

leaflet知识点:地图窗格panes的应用

一,需求背景 地图中存在无人机,停机坪,航线三个图层,需要实现无人机图层显示在最上面,停机坪图层显示在最下面,航线图层显示在中间。 二,遇到问题 由下图可知航线图层所在overlayPane窗格的z-…

工控 modbusTCP 报文

Tx 发送报文:00 C9 00 00 00 06 01 03 00 00 00 02 Rx 接收报文:00 C9 00 00 00 07 01 03 04 01 4D 00 01 Tx 发送报文:00 C9 00 00 00 06 01 03 00 00 00 02 00 C9 事务处理标识符 2字节 00 00 协议标识符 2字节 固定 00 00 00 06 长度 2字节 表示之后的字节总数 (…

大数据之ClickHouse

大数据之ClickHouse 简介 ClickHouse是一种列式数据库管理系统,专门用于高性能数据分析和数据仓库应用。它是一个开源的数据库系统,最初由俄罗斯搜索引擎公司Yandex开发,用于满足大规模数据分析和报告的需求。 特点 开源的列式存储数据库…

elementUI 下拉框加提示文案

效果如下&#xff1a; 展示文案在最下面&#xff0c;跟选项有个分割线 <el-select v-model"value" placeholder"请选择" clearable popper-class"addNotice" class"addNoticeS" visible-change"(v) >selectNotice(v,展示…

Testng测试框架(7)--测试运行

忽略测试 TestNG可以让你忽略类、特殊包、包及其子中的所有Test方法。 当在测试方法级别使用Ignore 注解&#xff0c;在功能上与Test(enabledfalse).一样。 以下例子将忽略类中所有tests。 import org.testng.annotations.Ignore; import org.testng.annotations.Test; Ign…

秦朗丢寒假作业系摆拍 博主被处罚

大家好&#xff01; 我是老洪&#xff0c;刚看到秦朗丢寒假作业系摆拍博主被处罚。 据央视财经媒体报道&#xff0c;近期&#xff0c;“秦朗丢寒假作业”事件被证实为自导自编的摆拍视频。 图片来源央视财经公众号截图 该博主与同事薛某&#xff0c;为了吸引更多的粉丝和流量&a…

基于SSM的旅游管理系统论文

摘 要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。针对旅游信息管理混乱&#xff0c;出错率高&#xff0c;信息安全性差&am…

解决cmd输入py文件路径不能执行,使用anaconda prompt 能执行

究其原因&#xff0c;是因为没有配置环境&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 第一步&#xff1a;配置环境变量 操作步骤如下&#xff1a; 1、右击此电脑 ---->属性 2、高级系统设置 3、点击环境变量 4、选择 …

代码随想录--数组--长度最小的子数组

题目 给定一个含有 n 个正整数的数组和一个正整数 s &#xff0c;找出该数组中满足其和 ≥ s 的长度最小的 连续 子数组&#xff0c;并返回其长度。如果不存在符合条件的子数组&#xff0c;返回 0。 示例&#xff1a; 输入&#xff1a;s 7, nums [2,3,1,2,4,3] 输出&#…

[BT]BUUCTF刷题第16天(4.12)

第16天 Web [MRCTF2020]Ezpop 打开网站就是一段泄露的源代码&#xff1a; <?php //flag is in flag.php //WTF IS THIS? //Learn From https://ctf.ieki.xyz/library/php.html#%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96%E9%AD%94%E6%9C%AF%E6%96%B9%E6%B3%95 //And Crack…