Вы не можете добавлять сообщения без установки django.contrib.messages.middleware.MessageMiddleware
Я новичок в Django.
Я пытаюсь запустить приложение, и мне нужно добавить нового пользователя в админ. Сервер запущен. Когда я ввожу информацию о новом пользователе и нажимаю "save", я получаю ошибку ниже. Я использую django-trunk.
MessageFailure at /admin/auth/user/add/
You cannot add messages without installing
django.contrib.messages.middleware.MessageMiddleware
Request Method: POST
Request URL: http://localhost:8000/admin/auth/user/add/
Django Version: 1.6.dev20130403090717
Exception Type: MessageFailure
Exception Value: You cannot add messages without installing django.contrib.messages.middleware.MessageMiddleware
Любые идеи о том, что может произойти?
Ответы
Ответ 1
Для меня проблема была специфичной для модульного тестирования. Оказывается, что некоторое промежуточное ПО не будет работать в некоторых типах модульных тестов, подробнее здесь:
https://code.djangoproject.com/ticket/17971
и здесь:
Почему мои Django unittests не знают, что установлено MessageMiddleware?
Мое решение состояло в том, чтобы просто издеваться над структурой сообщений для этих тестов, могут быть лучшие решения (тестовый клиент django?)
Ответ 2
Проверьте, есть ли django.contrib.messages
в INSTALLED_APPS
и django.contrib.messages.middleware.MessageMiddleware
в MIDDLEWARE_CLASSES
.
Ответ 3
Я встретил ту же ошибку.
Вы должны заметить заказ промежуточного программного обеспечения в MIDDLEWARE_CLASSES.
Вставьте соответствующее промежуточное программное обеспечение в final.Like,
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
)
Обратите внимание на порядок расположения.
Ответ 4
Проверьте, есть ли
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
)
вместо
MIDDLEWARE = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
)
Имя кортежа должно быть MIDDLEWARE_CLASSES
Ответ 5
Вероятно, вы помещаете неправильный WSGI_request
, обычно называемый request
как параметр метода add_message()