Устранение неполадок у объекта WSGIRequest нет атрибута «пользователь»? - PullRequest
9 голосов
/ 06 марта 2012

Я пытаюсь использовать декоратор @login_required, но получаю 'WSGIRequest' object has no attribute 'user' AttributeError. У меня есть оператор импорта from django.contrib.auth.decorators import login_required сверху, но я все еще получаю ошибку. Когда я удаляю @login_required перед def profile(request) в моем views.py, проблема исчезает, но когда я ее туда вставляю, проблема все еще остается.

Промежуточные классы из 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',
)

Ответы [ 2 ]

10 голосов
/ 06 марта 2012

Вам необходимо включить 'django.contrib.auth.middleware.AuthenticationMiddleware', потому что он устанавливает request.user.Вам также следует включить другое промежуточное ПО по умолчанию, иначе у вас возникнут другие проблемы.

3 голосов
/ 28 января 2014

На вопрос ОП можно ответить, но я прибыл сюда, потому что я столкнулся с этой ошибкой в ​​проекте Django, в котором уже было включено AuthenticationMiddleware, и который некоторое время успешно работал.

Проблема оказалась в том, что я обращался к серверу по другому URL-адресу, который не был настроен в ALLOWED_HOSTS. Это вызывало исключение SuspiciousOperation, и наш обработчик ошибок 500 пытался перенаправить его на страницу Django-CMS.

К сожалению, поскольку ошибка произошла так рано в запросе, не все промежуточное ПО было обработано, а user и current_page еще не добавлены в объект request, поэтому Django-CMS умерла от нескольких ранит при попытке отрисовки страницы, скрывая реальную ошибку в процессе.

Мне пришлось использовать runserver и вставить pdb точки останова, чтобы отладить это, потому что запуск под mod_wsgi делает невозможным использование интерактивного отладчика, а обратная трассировка не была полезна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...