Django 1.5-登录
在创建UserProfile模型之后。我开始创建登录,但由于get_user()错误,我被卡住了 例外情况Django 1.5-登录,django,django-1.5,Django,Django 1.5,在创建UserProfile模型之后。我开始创建登录,但由于get_user()错误,我被卡住了 例外情况 AttributeError: 'LoginForm' object has no attribute 'get_user' 这是我的密码: 更新 class LoginView(FormView): form_class = LoginForm redirect_field_name = REDIRECT_FIELD_NAME template_name =
AttributeError: 'LoginForm' object has no attribute 'get_user'
这是我的密码:
更新
class LoginView(FormView):
form_class = LoginForm
redirect_field_name = REDIRECT_FIELD_NAME
template_name = 'login.html'
success_url = '/'
def form_valid(self, form):
username = form.cleaned_data['username']
password = form.cleaned_data['password']
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
login(self.request, user)
return HttpResponseRedirect(self.get_success_url())
else:
return self.form_invalid()
def form_invalid(self):
return HttpResponseRedirect(reverse('accounts:login'))
def get_success_url(self):
if self.success_url:
redirect_to = self.success_url
else:
redirect_to = self.request.REQUEST.get(self.redirect_field_name, '')
netloc = urlparse.urlparse(redirect_to)[1]
if not redirect_to:
redirect_to = settings.LOGIN_REDIRECT_URL
elif netloc and netloc != self.request.get_host():
redirect_to = settings.LOGIN_REDIRECT_URL
return redirect_to
def post(self, request, *args, **kwargs):
form_class = self.get_form_class()
form = self.get_form(form_class)
if form.is_valid():
return self.form_valid(form)
else:
return self.form_invalid()
如何解决这个问题?任何帮助都将不胜感激。我对Django 1.5非常陌生。需要帮助。[更新]
在原始代码中,作者在名为get\u user
的表单方法中执行authenticate
操作。您已经在表单外部执行了此操作,因此只需将form.get_user()
替换为user
我使用的登录视图不是基于类的,我甚至不想使用Django表单实例,但它应该很容易适应:
def signin(request):
if request.method == 'POST':
user = authenticate(
email=request.POST.get('username', '').lower().strip(),
password= request.POST.get('password', ''),
)
if user is None:
messages.error(request, u'Invalid credentials')
else:
if user.is_active:
login(request, user)
return HttpResponseRedirect(request.GET.get('next', '/'))
else:
messages.error(request, u'User is not active.')
return render_to_response('login.html', locals(),
context_instance=RequestContext(request))
[旧答案]
为表单定义一个get_用户方法
未经测试(但应使您走上正确的道路):
[更新]
在原始代码中,作者在名为get\u user
的表单方法中执行authenticate
操作。您已经在表单外部执行了此操作,因此只需将form.get_user()
替换为user
我使用的登录视图不是基于类的,我甚至不想使用Django表单实例,但它应该很容易适应:
def signin(request):
if request.method == 'POST':
user = authenticate(
email=request.POST.get('username', '').lower().strip(),
password= request.POST.get('password', ''),
)
if user is None:
messages.error(request, u'Invalid credentials')
else:
if user.is_active:
login(request, user)
return HttpResponseRedirect(request.GET.get('next', '/'))
else:
messages.error(request, u'User is not active.')
return render_to_response('login.html', locals(),
context_instance=RequestContext(request))
[旧答案]
为表单定义一个get_用户方法
未经测试(但应使您走上正确的道路):
我在文档中发现了这一点:如果您有自定义身份验证(请参见自定义身份验证),则可以通过authentication\u form参数将自定义身份验证表单传递给登录视图。此表单必须在其init方法中接受request关键字参数,并提供一个get_user方法,该方法返回经过身份验证的用户对象(此方法仅在表单验证成功后调用)。是否可以发布LoginForm的代码?我在文档中发现了这一点:如果您有自定义身份验证(请参阅自定义身份验证)您可以通过authentication\u form参数将自定义身份验证表单传递到登录视图。此表单必须在其init方法中接受request关键字参数,并提供一个get_user方法,该方法返回经过身份验证的用户对象(此方法仅在表单验证成功后调用)。您可以发布LoginForm的代码吗?@catherine:您可以尝试更新的代码吗?(我使用电子邮件字段作为用户名,请根据您的需要调整)是否要移动到聊天室?再次出错,“匿名用户”对象没有属性“后端”如何没有移动到聊天室的快捷链接?@catherine:您可以尝试更新的代码吗?(我使用电子邮件字段作为用户名,请根据您的需要进行调整)是否要移动到聊天室?再次出错,“匿名用户”对象没有“后端”属性如何没有移动到聊天室的快捷链接?