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 № 1Para 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!