在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] 删除。
我来说两句