2012-03-06 32 views
9

Estoy tratando de usar el decorador @login_required pero obtengo un 'WSGIRequest' object has no attribute 'user' AttributeError. Tengo el estado de importación from django.contrib.auth.decorators import login_required en la parte superior, pero sigo recibiendo el error. Cuando elimino @login_required desde el frente de def profile(request) en mi views.py el problema desaparece, pero cuando lo puse allí, el problema sigue ahí.Solución de problemas El objeto 'WSGIRequest' no tiene ningún atributo 'usuario'?

clases de middleware de setting.py

MIDDLEWARE_CLASSES = (
    #~ 'django.middleware.common.CommonMiddleware', 
    'django.contrib.sessions.middleware.SessionMiddleware', 
    #~ 'django.middleware.csrf.CsrfViewMiddleware', 
    #~ 'django.contrib.auth.middleware.AuthenticationMiddleware', 
    #~ 'django.contrib.messages.middleware.MessageMiddleware', 
) 
+0

¿Puedes publicar tu configuración de MIDDLEWARE_CLASSES? – jpic

+0

sí. con suerte eso ayuda. –

Respuesta

10

necesita habilitar 'django.contrib.auth.middleware.AuthenticationMiddleware', ya que establece request.user. También debe habilitar el otro middleware predeterminado o tendrá otros problemas.

+0

No hay problema, por favor [cierre la pregunta] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) – jpic

3

La pregunta del OP puede ser respondida, pero llegué aquí porque estaba experimentando este error en un proyecto de Django que ya tenía habilitado AuthenticationMiddleware, y se había estado ejecutando con éxito durante algún tiempo.

El problema fue que estaba accediendo al servidor usando una URL diferente, que no estaba configurada en ALLOWED_HOSTS. Esto arrojaba una excepción SuspiciousOperation, y nuestro controlador Error 500 estaba tratando de enrutar esto a una página Django-CMS.

Desafortunadamente, debido a que ocurrió tan temprano en la solicitud el error, no todo el middleware había sido procesado, y user y current_page no había sido añadido al objeto request todavía, así que Django-CMS murió de múltiples heridas cuando se trata de hacer la página, oscureciendo el error real en el proceso.

tuve que usar runserver e insertar pdb puntos de interrupción para depurar este, porque se ejecuta bajo mod_wsgi hace que sea imposible el uso de un depurador interactivo, y la traza inversa no era útil.

Cuestiones relacionadas