Объект 'WSGIRequest' не имеет атрибута 'username' в django - PullRequest
0 голосов
/ 23 июня 2011

У объекта 'WSGIRequest' нет атрибута 'username'. Это ошибка, которую я получаю.Я прошел через большинство вопросов, связанных с этим, и сделал некоторые изменения соответственно.Но пока не встречал решения.В моем файле settings.py это есть

TEMPLATE_CONTEXT_PROCESSORS = ( "django.core.context_processors.debug", "django.core.context_processors.i18n")
TEMPLATE_CONTEXT_PROCESSORS += (
     'django.core.context_processors.request',
     'django.core.context_processors.debug',
 'django.core.context_processors.i18n',
     'django.core.context_processors.media',
     'django.core.context_processors.static',
     'django.contrib.auth.context_processors.auth',
     'django.contrib.messages.context_processors.messages',

) 
AUTH_PROFILE_MODULE = "prof.userprofile"
MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.middleware.doc.XViewMiddleware',
)

Я хочу знать, что означает эта ошибка, поскольку я впервые сталкиваюсь с такой ошибкой.И как это отладить?Редактировать:

Exception Value:    
'WSGIRequest' object has no attribute 'username'
Exception Location: /home/satyajit/geodjango/geographic_admin/prof/views.py in view_foo, line 18

Это мои views.py

from django.shortcuts import render_to_response
from django.contrib.gis.shortcuts import render_to_kml

from django import forms

from django.contrib.auth.models import User
from django.shortcuts import get_object_or_404, render_to_response
from django.http import HttpResponseRedirect, HttpResponse

from django.contrib.auth.decorators import login_required




@login_required 
def view_foo(request):

   user1 = User.objects.get(user=request.User.username)
   return render_to_response('welcome.html', {})

Ответы [ 2 ]

6 голосов
/ 23 июня 2011

Редактировать: хорошо, я только что понял, насколько глуп этот запрос, и моя ошибка: D.

Если вам нужно имя пользователя, вы можете сделать что-то вроде этого:

user1= request.user.username

вы получите пользовательский экземпляр по request.user.

this_user = request.user

Небольшое объяснение: ваш начальный запрос не имеет особого смысла, потому что в классе User нет поля user. Кроме того, этот запрос является излишним, поскольку пользовательский экземпляр уже предоставлен запросом (request.user, который является пользователем, чей сеанс

5 голосов
/ 23 июня 2011

Ошибки (и их обратные ссылки) в python почти всегда полезны и редко содержат ненужную информацию.

'WSGIRequest' object has no attribute 'username'. WSGIRequest - это класс запросов, поступающих из запросов WSGI от веб-сервера. Соглашение заключается в том, чтобы обрабатывать их в представлениях как параметр «запроса». Таким образом, ошибка указывает, что вы делаете request.bad_attribute где-то, где bad_attribute в этом случае username.

Ваш запрос будет иметь атрибут с именем username только в том случае, если какое-либо промежуточное программное обеспечение будет активным и добавит его. Однако по умолчанию в django есть промежуточное ПО, которое добавляет объект user, так что это, вероятно, то, что вы действительно хотели. request.user.username.

Также помните, что доступ к атрибутам чувствителен к регистру. В конце концов, это просто Python.

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