/ / No puede agregar mensajes sin instalar django.contrib.messages.middleware.MessageMiddleware - django, django-admin

No puede agregar mensajes sin instalar django.contrib.messages.middleware.MessageMiddleware - django, django-admin

Soy nuevo en Django. Estoy tratando de ejecutar una aplicación y necesito agregar un nuevo usuario a admin. El servidor se está ejecutando. Cuando ingreso la información, el nuevo usuario y presiono "guardar" obtengo el siguiente error. Estoy usando 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

¿Alguna idea de lo que podría estar pasando?

Respuestas

16 para la respuesta № 1

Para mí el problema era específico de las pruebas unitarias. Resulta que algunos middleware no funcionan en algunos tipos de pruebas unitarias, más información aquí:

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

y aquí:

¿Por qué mis pruebas de unidad Django no saben que MessageMiddleware está instalado?

Mi solución fue simplemente burlarse del marco de mensajes para esas pruebas, podría haber mejores soluciones (¿el cliente de prueba de django?)


10 para la respuesta № 2

Comprueba si tienes django.contrib.messages en INSTALLED_APPS y django.contrib.messages.middleware.MessageMiddleware en MIDDLEWARE_CLASSES.


2 para la respuesta № 3

Comprobar si es

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

en lugar de

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

El nombre de la tupla debe ser MIDDLEWARE_CLASSES


1 para la respuesta № 4

Me encontré con el mismo error. Debe observar el orden de middleware en MIDDLEWARE_CLASSES. Inserta el middleware correspondiente en la final.

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

Tenga en cuenta la disposición de la orden.


0 para la respuesta № 5

Probablemente pones un error WSGI_request cuando se suele llamar request como un parámetro para add_message() método


0 para la respuesta № 6

Actualización 2018 En django 2.0+ se cambió el nombre en la configuración. Ahora usa MIDDLEWARE en lugar de MIDDLEWARE_CLASSES Nombre de la lista en la configuración!