Вы не можете добавлять сообщения без установки 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()