升级到Django 1.11后,append_slash不再起作用

罗恩

在Django 1.9(和Python 3.4)中,默认的APPEND_SLASH可以正常工作,即我可以输入'localhost:8000 / ideatree / videos'并添加斜杠。

升级到Django 1.11(和Python 3.6)后,APPEND_SLASH不再起作用。

我一直在寻找弃用通知,但到目前为止,似乎没有任何适用的内容。(旁边的问题:与以前的版本一样,如何重新打开“大声弃用警告”?)

这是我的主要urls.py:

from django.conf.urls import include, url
from django.contrib import admin

urlpatterns = [   url(r'^(?i)ideatree/', include('ideatree.urls'),
 name='home'),
]

以及包含的app_space中的urls.py:

from django.conf.urls import url
from . import views

app_name = 'ideatree'
urlpatterns = [
   url(r'^$', views.index,name='index'),
   url(r'^(?i)features/$', views.features, name='features'),
   url(r'^(?i)videos/$', views.videos, name='videos')
]

这两个url.py文件都没有改变,除了在Django 1.9中

from django.conf.urls import patterns, include, url

在主urls.py中,但现在不赞成使用“模式”并发出警告。

和以前一样,我没有在settings.py中设置APPEND_SLASH,而是依靠它的默认值True,尽管我尝试将它的显式设置为True并得到相同的结果。

这是我的中间件:

MIDDLEWARE_CLASSES = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

这是错误:

Page not found (404)
Request Method: GET
Request URL:    http://localhost:8000/ideatree/videos

Using the URLconf defined in mysite.urls, Django tried these URL patterns, in this order:
^(?i)ideatree/ ^$ [name='index']
^(?i)ideatree/ ^(?i)features/$ [name='features']
^(?i)ideatree/ videos/$ [name='videos']

我还尝试清除浏览器缓存,并使用其他浏览器,以防仍然无法清除缓存。

以DEBUG级别或INFO级别登录到文件时,什么都没有显示,一个空文件(警告:我的日志记录设置未经测试)。

我必须忽略一些东西。

阿拉斯代尔

Django在Django 1.10中引入了新的中间件。MIDDLEWARE如果您使用的是新式中间件,并且MIDDLEWARE_CLASSES使用的是旧式中间件则应使用该设置

如果您使用的是Django 1.10或1.11,则MIDDLEWARE_CLASSES仍支持设置,因此Django应该继续使用附加的斜杠进行重定向。

但是,升级到Django 2.0后,该MIDDLEWARE_CLASSES设置将被忽略,您必须切换到MIDDLEWARE

切换到时MIDDLEWARE,您应该删除SessionAuthenticationMiddleware因为它在1.10和1.11中无效,并且在Django 2.0中已完全删除。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

升级到Ubuntu 17.10后,RAID1是只读的

将 RxPy 从 1.x 升级到 3.x 后订阅不起作用

升级到Debian Stretch后,Tar排除列表不再起作用

升级到Visual Studio 16.3.0后,dotnet ef命令不再起作用

从PHP 5.5升级到5.6后,cURL文件上传不再起作用

将Apache升级到2.4后,内部URL重写不再起作用

--headless 标志在升级到 chrome 76/chromedriver 76 后不再起作用

升级到Django 1.5后Oracle查询变慢

升级到1.8.1后Django管理员中断

升级到django-rest-framework 3后的UnicodeDecodeError

DjangoCMS TypeError:from_db_value()缺少1个必需的位置参数:升级到3.7.2 w / Django 3.0.1后的'context'

从16.04升级到18.04后,为什么mount.cifs在fstab中不再起作用?

升级到rc2后,Angular2快速入门应用程序不再起作用

从Rails 4升级到Rails 5后,自定义错误处理不再起作用

升级到0.7.1后,upickle中的自定义作者/阅读器不再起作用

升级到vue-cli-4后,相对路径在标准导入中不再起作用

升级到Ubuntu 13.10后,智能卡阅读器Vasco DP905不再起作用

升级到Symfony3后,为什么我的用户登录名不再起作用

将xcode升级到5后,旧项目在ios6.1模拟器下不再起作用

从10.10升级到12.04后,mythbuntu标准MCEUSB遥控器不再起作用

升级到angular-cli beta 31(从beta 24开始)后,ng lint np不再起作用

当我将 WebStorm 升级到 2017.2 并将 Ionic 插件升级到 3.5.0 时,它似乎不再支持我的 Ionic v1 项目

csrftoken 标签在升级到 Django 1.11 后不起作用

升级到 Django 1.11 站点后在 Chrome 中不起作用

从0.9升级到1后,缺少Material-ui getMuiTheme

升级到VS 2017后,.Net Core 1.x项目将无法启动

升级到Android Studio 3.0 Beta 1后,Gradle同步失败

从6.0升级到6.1-RC1后的CNFE

从 Ubuntu 11.10 升级到 13.04 后 RAID1 阵列丢失