Django和Flask对于URL尾斜杠(back slash)的处理
最近在看Flask,其中提到了对于URL尾斜杠的处理。感觉算是一个需要注意的地方吧,就和Django的处理方式来进行一个简单的对比。
首先说下什么是尾斜杠。
http://www.baidu.com/ # 有尾斜杠 http://www.baidu.com # 无尾斜杠
清楚了吧。
那么为什么我们要关注尾斜杠这个问题呢?这个要从Django和Flask对于URL的设置说起。
Django和Flask设置URL方式:
r'^admin/$' # Django 'admin/' # flask
可见两者都是基于字符串的匹配。所以问题就出来了:
如果我设置了一个形如'admin'的URL,那么当用户输入'admin/'的时候应不应该匹配呢?
或者换种说法:
如果我设置了一个形如'admin/的'URL,那么当用户输入'admin'的时候应不应该匹配呢?
这就是尾斜杠问题。
下面我们看看Django和Flask是如何处理的。
Django中的处理方法是提供了一个设置项,APPEND_SLASH,这个设置的默认值是True。当APPEND_SLASH为True的时候,如果一个URL没有匹配成功,那么Django会在这个URL尾部加上一个'/'并重新redirect回来。如果设置为False,那没有匹配成功的时候就什么都不会做。
需要注意的是,由于采用了redirect的方式,所以POST数据可能会丢失。
Flask默认行为和Django一样,只不过文档中并没有说明是不是采用redirect方法,如果不是的话,那么数据就没有丢失的风险了。
所以现在我们可以来回答上面的两个问题了:
如果设置了'admin',那么只有'admin'会匹配,'admin/'不会匹配。
如果设置了'admin/',那么'admin'和'admin/'都会匹配。
Django和Flask对于URL尾斜杠(back slash)的处理的更多相关文章
- ASP.NET MVC中URL末尾斜杠的实现
在网站的SEO优化中,通常都会涉及到URL结尾斜杠的问题. http://blog.sina.com.cn/s/blog_828e7ce40100srj1.html http://www.dengyo ...
- nginx 重写URL尾部斜杠
1. 在URL结尾添加斜杠 在虚拟主机中这么添加一条改写规则: rewrite ^(.*[^/])$ $1/ permanent;或者rewrite ^([/\w-_]*[^/])$ $1/ perm ...
- URL中斜杠/和反斜杠\的区别小结
Unix使用斜杆/ 作为路径分隔符,而web应用最新使用在Unix系统上面,所以目前所有的网络地址都采用 斜杆/ 作为分隔符. Windows由于使用 斜杆/ 作为DOS命令提示符的参数标志了,为了不 ...
- json_encode让URL内容斜杠/不转义
同事在开发接口的时候根据接口提示要求传参一个字符串json,该json格式中有URL数组,按照json_encode编码后总发现 http://变成了 http:\/\/ .URL的斜杠自动的被转义 ...
- django(二)视图和URL配置
创建一份视图: 在上一节,使用django-admin.py startproject制作的mysite文件夹中,创建一个叫做views.py的空文件.这个Python模块健柏寒这一章的视图. vie ...
- url末尾的斜杠作用探秘
今天突然好奇,想区分www.abc.com/efg 和www.abc.com/efg/这两个网址的区别.即分析一下url末尾加个斜杠是否有特殊的效果. 找到网上的介绍: 当Web服务器接收到对某个末尾 ...
- URL后面带\斜杠对SEO的影响
例如以下的两种URL书写方式: 1.www.baidu.com 2.www.baidu.com\ 这两种书写方式的区别到底在哪里呢?哪一个的速度更快呢?可能对于我们大多数人来说会觉得两个速度一样,因为 ...
- nginx url自动加斜杠的问题
nginx url自动加斜杠问题及301重定向 时间:2016-02-04 15:14:28来源:网络 导读:nginx url自动加斜杠问题及301重定向,URL指向一个目录并且在最后没有包含斜杠, ...
- URL结尾反斜杠对SEO的影响(转)
开始纠结网站URL加不加反斜杠对SEO的影响,还有些人把这个反斜杠说的神乎其神,我擦,本人手贱百度了一下,果然“博大精深”,敬请参考! 从百度站长平台的外链分析里,我们可以看到,一些目录结构的URL, ...
随机推荐
- 搭建IONIC开发环境
1.准备工作 下载 Node.js(下载包),WebStorm(IDE,编写代码,浏览器调试),JDK(webstorm 运行环境),Android SDK (Android编译) 2.配 ...
- mysql--sqlalchemy.exc.IntegrityError: (IntegrityError) (1215, 'Cannot add foreign key constraint'
今天在使用mysql时遇到的问题,最后发现问题是,数据类型与外键数据类型不同,改正过来就没有问题了.
- 使用Beautifulsoup爬取药智网数据
使用Beautifulsoup模块爬取药智网数据 Tips:1.爬取多页时,先用一页的做测试,要不然ip容易被封 2.自己常用的处理数据的方法: reg=re.compile('正则表达式') dat ...
- JavaWeb前端:CSS
CSS 主要是要熟悉的掌握选择器 Div 的盒模型: 整个网页被切割成一个一个盒子,盒子可以套盒子,每个盒子通过以下几个主要属性来控制显示位置: 边框 Border-top, Border-botto ...
- 即时聊天IM之三 XMPP协议客户端库的和Android端框架概述
合肥程序员群:49313181. 合肥实名程序员群:128131462 (不愿透露姓名和信息者勿加入) Q Q:408365330 E-Mail:egojit@qq.com smack ...
- 关于ViewPager、ViewFilpper、ViewFlow三种实现水平向滑动方式的比较
ViewPagerViewPager类提供了多界面切换的新效果.新效果有如下特征:[1] 当前显示一组界面中的其中一个界面.[2] 当用户通过左右滑动界面时,当前的屏幕显示当前界面和下一个界面的一部分 ...
- 设计模式学习笔记-Adapter模式
Adapter模式,就是适配器模式,使两个原本没有关联的类结合一起使用. 平时我们会经常碰到这样的情况,有了两个现成的类,它们之间没有什么联系,但是我们现在既想用其中一个类的方法,同时也想用另外一个类 ...
- ShellExecute调用另外一个进程(demo为一个控制led的一段代码)
public enum ShowCommands : int { SW_HIDE = 0, SW_SHOWNORMAL = 1, ...
- 为OpenEdx中lms注册模块扩展字段
最近遇到需求,需要扩展注册的字段,例如新增手机mobile字段 1.打开register.html文件 路径为\edxapp\edx-platform\lms\templates\register ...
- php简单单例模式
所谓单例模式,适用于使用一个对象可以完成所有的业务逻辑的类(一般不考虑继承的类) //单例模式 function getInstance($class_name){ //创建一个存储各种需要单例的类的 ...