Сообщения не отображаются в админке на AWS dev server Django-3.1
context: Приложение Django 3.1, развернутое на лямбде AWS с помощью terraform. Я еще не установил производственные настройки, это мой dev-сервер.
Я использую https://github.com/adamchainz/apig-wsgi
Я заметил, что сообщения от django.contrib.messages
не появляются при попытке получить api ключ с помощью djangorestframework-api-key
через админку. То, что он находится на лямбде, означает, что я не могу получить доступ к лямбде REPL, чтобы создать api ключ программно.
примечание: django-debug-toolbar
также не работает и делает это тихо, поэтому у меня есть подозрение, что мои настройки context_processors
выключены, поэтому у меня нет переменных messages
или DEBUG
, но я не могу найти проблему в моих настройках? Ниже приведен мой код без настроек панели инструментов отладки.
project/settings/base.py
DEBUG = True
INSTALLED_APPS = [
'app',
'rest_framework',
'rest_framework_api_key',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [
os.path.join(BASE_DIR, 'templates'),
],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
STATICFILES_FINDERS = [
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
]
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3StaticStorage'
AWS_STORAGE_BUCKET_NAME= [redacted]
AWS_DEFAULT_ACL = [redacted]
AWS_QUERYSTRING_AUTH= [redacted]
AWS_S3_REGION_NAME = [redacted]
AWS_LOCATION = [redacted]
USE_I18N = True
STATIC_URL = '/static/'
REST_FRAMEWORK = {
...
'DEFAULT_PERMISSION_CLASSES': [
"rest_framework_api_key.permissions.HasAPIKey",
]
}
project/wsgi.py
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'z38180hu.settings')
application = get_wsgi_application()
requirements.txt
Django>=3.1,<3.2
django-storages==1.11.1
apig-wsgi
psycopg2-binary
djangorestframework
djangorestframework-api-key==2.1.0
попытки:
- пробовал жесткую перезагрузку
F5
и все такое - пробовал добавить панель отладки django и записать в лог apikey, который появляется в сообщениях в админке
- попробовал collectstatic на dev-сервере
- пробовал проверять сессии пользователей и видеть сообщения на сессиях пользователей и там есть сообщения
Талантливый коллега исправил это. Добавление
MESSAGE_STORAGE = 'django.contrib.messages.storage.session.SessionStorage'
в ваши настройки решает проблему.
Credit goes to https://stackoverflow.com/users/1394697/flipperpa