/ / Você não pode adicionar mensagens sem instalar o django.contrib.messages.middleware.MessageMiddleware - django, django-admin

Você não pode adicionar mensagens sem instalar o django.contrib.messages.middleware.MessageMiddleware - django, django-admin

Eu sou novo no Django. Estou tentando executar um aplicativo e preciso adicionar um novo usuário ao administrador. O servidor está em execução. Quando eu digito a informação para o novo usuário e clico em "salvar", recebo o erro abaixo. Eu estou usando o 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

Alguma idéia do que pode estar acontecendo?

Respostas:

16 para resposta № 1

Para mim, o problema era específico para testes unitários. Acontece que alguns middlewares não funcionam em alguns tipos de testes unitários, mais informações aqui:

https://code.djangoproject.com/ticket/17971

e aqui:

Por que meus testes de unidade do Django não sabem que o MessageMiddleware está instalado?

Minha solução foi apenas ridicularizar o framework de mensagens para esses testes, pode haver soluções melhores (o cliente de teste do django?)


10 para resposta № 2

Verifique se você tem django.contrib.messages dentro INSTALLED_APPS e django.contrib.messages.middleware.MessageMiddleware dentro MIDDLEWARE_CLASSES.


2 para resposta № 3

Verifique se é

MIDDLEWARE_CLASSES = (
"django.middleware.common.CommonMiddleware",
"django.contrib.sessions.middleware.SessionMiddleware",
"django.contrib.auth.middleware.AuthenticationMiddleware",
"django.contrib.messages.middleware.MessageMiddleware",
)

ao invés de

MIDDLEWARE = (
"django.middleware.common.CommonMiddleware",
"django.contrib.sessions.middleware.SessionMiddleware",
"django.contrib.auth.middleware.AuthenticationMiddleware",
"django.contrib.messages.middleware.MessageMiddleware",
)

O nome da tupla deve ser MIDDLEWARE_CLASSES


1 para resposta № 4

Eu encontrei o mesmo erro. Você tem que notar a ordem do middleware em MIDDLEWARE_CLASSES. Insira o middleware correspondente na final.

MIDDLEWARE_CLASSES = (
"django.middleware.common.CommonMiddleware",
"django.contrib.sessions.middleware.SessionMiddleware",
"django.contrib.auth.middleware.AuthenticationMiddleware",
"django.contrib.messages.middleware.MessageMiddleware",
)

Observe o arranjo de ordem.


0 para a resposta № 5

Provavelmente você colocou um erro WSGI_request quando geralmente chamado request como um parâmetro para add_message() método


0 para a resposta № 6

Atualização 2018 No django 2.0+ o nome nas configurações foi alterado. Agora use MIDDLEWARE ao invés de MIDDLEWARE_CLASSES nome da lista nas configurações!