Сообщения не отображаются в админке на 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

Вернуться на верх