Django中间件,可以自动删除尾随URL斜杠和301重定向到非斜杠终止URL。

tocka-django-unslashed的Python项目详细描述


CircleCIcodecov

这个中间件提供了django commonmiddleware的反向功能 APPEND_SLASH功能。它可以自动删除尾随的url 斜杠和301重定向到非斜杠终止的url。这种行为 如果初始URL以斜线结尾且无效,则执行 尾随斜杠生成有效的url,并且REMOVE_SLASH设置为 是的。否则没有效果。

例如,如果没有,foo.com/bar/将被重定向到foo.com/bar 具有foo.com/bar/的有效url模式,但具有有效的模式 对于foo.com/bar和REMOVE_SLASH=True

分叉信息

这是https://github.com/harshvb7/django-unslashed的叉子,它 依次是https://github.com/dghubble/django-unslashed的叉。

对此分叉的更改:*更新为django 1.10,兼容到 1.8和python 2.7、3.3-3.5。*带前缀的pypi包名称 tocka-*添加了circleci和codecov,删除了travisci

安装

安装django-unslashed

pip install tocka-django-unslashed

如果您使用的是requirements.txt文件,请添加 django-unslashed>=0.3.0到它。

用法

修改要添加的djangosettings.py文件 unslashed.middleware.RemoveSlashMiddleware到您的 MIDDLEWARE_CLASSES前后 django.middleware.common.CommonMiddleware

MIDDLEWARE_CLASSES=(# ...'unslashed.middleware.RemoveSlashMiddleware','django.middleware.common.CommonMiddleware',# ...)

REMOVE_SLASH设置为true,将APPEND_SLASH设置为false,

APPEND_SLASH=FalseREMOVE_SLASH=True

如果REMOVE_SLASH为false或未设置,则removeSlashMiddleware没有 效果。

如果要使用UNSLASHED_USE_302_REDIRECT,请将其设置为true httpedirect而不是httppermanentredirect,

UNSLASHED_USE_302_REDIRECT=True

基本原理

Web应用程序 should 有一个url结构:

  1. 如果斜线无效,则使用尾部斜线和重定向来附加斜线 访问非斜杠终止的URL。
  2. 不使用尾随斜杠URL,如果无效,则重定向到非斜杠URL 访问以斜杠结尾的URL。前一个是django违约, 而通过将此中间件添加到 项目。

注释

紧密基于django的附加斜杠通用中间件 implementation

测试

tox

这将在python和django的多个版本上运行测试,如 在tox.ini中定义。

$ git clone https://github.com/frnhr/django-unslashed.git
$ cd django-unslashed
$ pip install -r requirements-dev.txt
$ tox
...
...
...
________________________________________________________________________________________________________ summary _________________________________________________________________________________________________________
  django_master-py35: commands succeeded
  django_master-py34: commands succeeded
  django_master-py27: commands succeeded
  django110-py35: commands succeeded
  django110-py34: commands succeeded
  django110-py27: commands succeeded
  django19-py35: commands succeeded
  django19-py34: commands succeeded
  django19-py27: commands succeeded
  django18-py35: commands succeeded
  django18-py34: commands succeeded
  django18-py33: commands succeeded
  django18-py27: commands succeeded
  lint: commands succeeded
  congratulations :)

许可证

MIT License

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Android:在ListView上使用setOnItemClickListener   使用Netbeans 7.0连接到SQL Server的java正在挂起   java Spring3依赖项注入不适用于mule   java Flink SQL结果字段与LocalDateTime上请求的类型错误不匹配   java找不到文件的结尾   考虑到NamingStrategy,java有没有办法将字符串转换为JsonNode?   使用Netbeans/ant部署java(命令行)应用程序   java如何修复Spring引导多部分上载中的“所需请求部分不存在”   java在应用程序启动时通过引用获取映射未知目标实体属性异常   java形状旋转问题Java2d   Weblogic服务器上的java ExecuteAndWaitInterceptor问题   JavaSpringBoot:project将图像保存在错误的路径中,并且在使用IDEIntellji打开时不显示图像   类向java接口添加方法   Swing组件上的Java 7泛型   sql server如何从java获取用户名。sql。联系   java如何检查该行是否与正则表达式(regex)冲突?   java如何在spring引导安全中为计数失败登录设置验证登录为false   图像如何在Java中使PNG的白色透明?