Не удается просмотреть страницу администрирования django 2.0 после обновления
Я только что портировал на Python3 с 2-х и обновлял Django с 1.7 до 2.0 (я знаю об огромных изменениях). Я использую Heroku для размещения приложения.
Когда я запускаю heroku local или просто запускаю приложение локально с помощью manage.py runserver, приложение загружается, но при переходе на страницу /admin появляется ошибка:
Page not found (404)
Request Method: GET
Request URL: http://127.0.0.1:5000/admin
Using the URLconf defined in loowatt.urls, Django tried these URL patterns, in this order:
write/
admin/
^$ [name='index']
The current path, admin, didn't match any of these.
Мой новый app.urls.py выглядит так:
1 from django.contrib import admin
2 from django.urls import include, path
3
4 from . import views
5
6 urlpatterns = [
7 path('write/', views.write),
8 path('admin/', admin.site.urls),
9 path('', include('units.urls')),
10 ]
И в моих настройках есть все правильное промежуточное ПО и контекстные процессоры для настроек администратора:
21 INSTALLED_APPS = [
22 'django.contrib.admin',
23 'django.contrib.auth',
24 'django.contrib.contenttypes',
25 'django.contrib.sessions',
26 'django.contrib.messages',
27 'units.apps.UnitsConfig',
28 # Disable Django's own staticfiles handling in favour of WhiteNoise, for
29 # greater consistency between gunicorn and `./manage.py runserver`. See:
30 # http://whitenoise.evans.io/en/stable/django.html#using-whitenoise-in-development
31 # 'whitenoise.runserver_nostatic',
32 'django.contrib.staticfiles',
33 'import_export',
34 'rangefilter',
35 ]
37 MIDDLEWARE_CLASSES = [
38 'django.middleware.security.SecurityMiddleware',
39 'whitenoise.middleware.WhiteNoiseMiddleware',
40 'django.contrib.sessions.middleware.SessionMiddleware',
41 'django.middleware.common.CommonMiddleware',
42 'django.middleware.csrf.CsrfViewMiddleware',
43 'django.contrib.auth.middleware.AuthenticationMiddleware',
44 'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
45 'django.contrib.messages.middleware.MessageMiddleware',
46 'django.middleware.clickjacking.XFrameOptionsMiddleware',
47 ]
53 TEMPLATES = [
54 {
55 'BACKEND': 'django.template.backends.django.DjangoTemplates',
56 'DIRS': [],
57 'APP_DIRS': True,
58 'OPTIONS': {
59 'context_processors': [
60 'django.template.context_processors.debug',
61 'django.template.context_processors.request',
62 'django.contrib.auth.context_processors.auth',
63 'django.contrib.messages.context_processors.messages',
64 ],
65 'debug': DEBUG,
66 },
67 },
68 ]
У кого-нибудь есть какие-то идеи о том, что они попробуют сделать дальше?
1 ответ
Вы не переключились с промежуточного программного обеспечения старого стиля MIDDLEWARE_CLASSES
к промежуточному программному обеспечению нового стиля MIDDLEWARE
, Вы получаете 404, потому что ваш проект по умолчанию MIDDLEWARE = []
, так что редирект для добавления косой черты (например, /admin
-> `/admin/) не происходит).
Обратите внимание, что Django с 1,7 до 2,0 - это большой прыжок. Возможно, вам будет проще сначала пройти через 1.8 и 1.11 (что является LTS и все еще поддерживается). В этом случае Django 1.11 поддерживает MIDDLEWARE_CLASSES
а также MIDDLEWARE
так что вы можете заставить ваше приложение работать на Django 1.11 с MIDDLEWARE_CLASSES
, переключиться на MIDDLEWARE
исправить предупреждение об устаревании, и тогда вы в лучшем положении, чтобы перейти на Django 2.0.
Обратите внимание, что вы все еще можете использовать url()
в Django 2.0, поэтому вам не нужно переписывать ваши шаблоны URL для использования path()
пока у вас не заработает остальная часть проекта.