В 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'),
]
и urls.py из включенного app_space:
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, но «шаблоны» теперь устарели и выдают предупреждение.
Как и прежде, я не установил APPEND_SLASH в settings.py, полагаясь на его значение по умолчанию 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 ничего не показывает, пустой файл (предупреждение: мои настройки регистрации не проверены).
Должно быть что-то, что я упускаю из виду.
(?i)
из ваших регулярных выражений в вашем основном URL-адресе и URL-адресе приложения? - person Alasdair   schedule 30.09.2017^(?i)
. Вы публикуете свой точный код и сообщение об ошибке? - person Alasdair   schedule 01.10.2017MIDDLEWARE
в настройках (добавлено в Django 1.10)? - person Alasdair   schedule 01.10.2017