django'User'对象没有属性'get'错误 [英] django 'User' object has no attribute 'get' error
问题描述
我的views.py看起来完全一样
def custom_login(request):if request.user.is_authenticated():return HttpResponseRedirect('dashboards')return login(request,'login.html',authentication_form = LoginForm)def custom_logout(request):return logout (request,next_page ='/')def user(request):context = {'user':user,'groups':request.user.groups.all(),'dashboards':Dashboard} return render_to_response('registration / dashboards.html',context,context_instance = RequestContext(request))
和我的forms.py就像
from django import forms
from django.contrib.auth.models import User来自dja的
ngo.forms import ModelForm
#from mhawk.models import Dashboard
class LoginForm(forms.Form):
username = forms.CharField(label =(u 'user name'))
password = forms.CharField(label =(u'Password'),widget = forms.PasswordInput(render_value = False))
,而我正在尝试在html页面中显示登录用户名。
这里是我的追踪错误
环境:
请求方法:POST
请求URL:http://127.0.0.1:8000/user/
Django版本:1.7.3
Python版本:2.7.3
安装的应用程序:
('django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'mhawk')
安装的中间件:
('django.contrib.sessions.middleware.Sessi onMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware')
追溯:
文件/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.pyin get_response
204. response = middleware_method(请求,响应)
在process_response
中的文件/usr/local/lib/python2.7/dist-packages/django/middleware/clickjacking.py31.如果response.get('X-Frame -Options',None)不是None:
异常类型:/ user /
中的AttributeError异常值:'User'对象没有属性'get'
urls.py看起来像
从django.c onf.urls导入模式,包括来自django.contrib的url
从饮酒者导入视图导入管理
,模型
从django.contrib.auth.models导入用户
urlpatterns = patterns('',
url(r'^ admin /',include(admin.site.urls)),
url(r'^ login / $' django.contrib.auth.views.login',),
url(r'^ logout / $','django.contrib.auth.views.logout'),
url(r'^ user / $','mhawk.views.User'),
)
dashboards.html : -
{%extendsbase.html%} {%block content%} {%if user.is_authenticated%}< p> ;欢迎,{{request.user.get_username}}。 <峰; br /> {%else%}< p>欢迎,新用户。请登录。< / p> {%endif%}< ul> {%for group in groups%}< li> < strong> {{group.name}}< strong> - {{dashboards.d_name}} {%if not forloop.last%},{%endif%}< / li> {%endfor%}< / ul> {%endblock%}
p> 有你的问题,在网址中,你指向的不是视图,而是指向 您的问题不是 无论如何,为什么不使用django的身份验证视图?他们做的是同样的东西,你试图实现。 哦,是的,并将其添加到您的设置中: 这里是一个承诺的 I am writing an simple django application and got stuck into this error, can some one please help me
my views.py looks exactly as
and my forms.py is like and the thing is I am trying to display the logged in username in an html page. here is my trace back of error urls.py looks like dashboards.html:-
Edit There is your problem, in urls, you are pointing not to a view, but to a Your problem is instead of Regardless, why don't you use django's authentication views? They do same stuff as you are trying to implement. Oh yeah, and add this to your settings: And here is a promised
这篇关于django'User'对象没有属性'get'错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
用户
。 你知道Python是区分大小写的。 $)
$ b
响应
,中间件是得到一个用户
对象,所以在任何地方,而不是回复你返回一个用户,我没有看到它在代码中。
从django.contrib.auth.views导入登录,注销
def custom_login(request):
如果request.user.is_authenticated():
返回HttpResponseRedirect('dashboards')
返回登录(request,'login.html' authentication_form = LoginForm)
def custom_logout(request):
return logout(request,next_page ='/')
LOGIN_REDIRECT_URL ='/仪表板/'
用户
查看:
from django.contrib.auth.decorators import login_required
@login_required
def user(request):
#btw'user'变量已经在模板中可用
context = {'user':request.user}
return render_to_response('dashboards.html'上下文,context_in stance = RequestContext(request))
def custom_login(request):
if request.user.is_authenticated():
return HttpResponseRedirect('dashboards')
return login(request, 'login.html', authentication_form=LoginForm)
def custom_logout(request):
return logout(request, next_page='/')
def user(request):
context = {'user': user, 'groups': request.user.groups.all(), 'dashboards': Dashboard}
return render_to_response('registration/dashboards.html', context, context_instance=RequestContext(request))
from django import forms
from django.contrib.auth.models import User
from django.forms import ModelForm
#from mhawk.models import Dashboard
class LoginForm(forms.Form):
username = forms.CharField(label=(u'User Name'))
password = forms.CharField(label=(u'Password'), widget=forms.PasswordInput(render_value=False))
Environment:
Request Method: POST
Request URL: http://127.0.0.1:8000/user/
Django Version: 1.7.3
Python Version: 2.7.3
Installed Applications:
('django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'mhawk')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware')
Traceback:
File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response
204. response = middleware_method(request, response)
File "/usr/local/lib/python2.7/dist-packages/django/middleware/clickjacking.py" in process_response
31. if response.get('X-Frame-Options', None) is not None:
Exception Type: AttributeError at /user/
Exception Value: 'User' object has no attribute 'get'
from django.conf.urls import patterns, include, url
from django.contrib import admin
from drinker import views, models
from django.contrib.auth.models import User
urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
url(r'^login/$', 'django.contrib.auth.views.login',),
url(r'^logout/$', 'django.contrib.auth.views.logout'),
url(r'^user/$', 'mhawk.views.User'),
)
{% extends "base.html" %}
{% block content %}
{% if user.is_authenticated %}
<p>Welcome, {{ request.user.get_username }}. <br/>
{% else %}
<p>Welcome, new user. Please log in.</p>
{% endif %}
<ul>
{% for group in groups %}
<li>
<strong>{{ group.name }}<strong> -
{{ dashboards.d_name }}{% if not forloop.last %},{% endif %}
</li>
{% endfor %}
</ul>
{% endblock %}
User
. Python is case sensitive, you know. :)
response
, middleware is getting a User
object, so somwhere, instead of response you are returning a user, I don't see it in your code though.from django.contrib.auth.views import login, logout
def custom_login(request):
if request.user.is_authenticated():
return HttpResponseRedirect('dashboards')
return login(request, 'login.html', authentication_form=LoginForm)
def custom_logout(request):
return logout(request, next_page='/')
LOGIN_REDIRECT_URL = '/dashboards/'
user
view:from django.contrib.auth.decorators import login_required
@login_required
def user(request):
# btw 'user' variable is already available in templates
context = {'user': request.user}
return render_to_response('dashboards.html', context, context_instance=RequestContext(request))