如何解决\'WSGIRequest\'对象在django中没有属性\'username\'
|| \'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\',{})
解决方法
编辑:好的,我刚刚意识到这个查询有多愚蠢,我的错误:D。
如果您想要用户名,则可以执行以下操作:
user1= request.user.username
您得到request.user
的用户实例。
this_user = request.user
一点解释:您的初始查询没有多大意义,因为User类没有字段user。同样,该查询是多余的,因为请求已经提供了用户实例(request.user,即为其会话的用户
, python中的错误(及其回溯)几乎总是有用的,并且很少包含不相关的信息。
\'WSGIRequest\' object has no attribute \'username\'
。 WSGIRequest
是来自Web服务器的WSGI请求的请求类别。约定是在视图中将这些作为\“ request \”参数进行处理。因此该错误表明您在某处正在执行request.bad_attribute
,这里的ѭ9where是username
。
如果某些中间件处于活动状态并添加了请求,那么您的请求将仅具有名为username
的属性。但是,django中的默认值包括添加了user
对象的中间件,所以这可能正是您真正想要的。 request.user.username
。
另外,请记住,属性访问区分大小写。毕竟是Just Python。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。