2012-11-08 20 views
0

我是Django的新手。登录验证错误

我的登录页面只需要“用户名”和“密码”,如果它们留空或填写不正确,我想raise ValidationError。我创建的代码,但它只是提出了

“在KeyError异常/登录/”和“UnboundLocalError在/登录/:分配前引用了当地 变量‘语境’”

如何解决我的代码?

views.py

def LoginRequest(request): 
    if request.user.is_authenticated(): 
     return HttpResponseRedirect('/profile/') 
    if request.method == 'POST': 
     form = LoginForm(request.POST) 
     if form.is_valid(): 
      username=form.cleaned_data['username'] 
      password = form.cleaned_data['password'] 
      uasite1= authenticate(username=username, password=password) 
      if uasite1 is not None: 
       login(request, uasite1) 
       return HttpResponseRedirect('/profile/') 
      else: 
       return render_to_response('login.html', {'form': form}, context_instance=RequestContext(request)) 
     else: 
      return render_to_response('login.html', context, context_instance=RequestContext(request)) 
    else: 
     form = LoginForm() 
     context ={ 'form' : form} 
     return render_to_response('login.html',{'form': form}, context_instance=RequestContext(request)) 

form.py

class LoginForm(forms.Form): 
    username = forms.CharField(label = (u'User Name')) 
    password = forms.CharField(label = (u'Password'),widget = forms.PasswordInput(render_value=False)) 

    def clean_username(self): 
     data = self.cleaned_data['username'] 
     if not data: 
      raise forms.ValidationError("Please Enter Username.") 
     return data 

    def clean_password(self): 
     data = self.cleaned_data['password'] 
     if not data: 
      raise forms.ValidationError("Please Enter Password.") 
     return data 

    def clean(self): 
     username = self.cleaned_data['username'] 
     password = self.cleaned_data['password'] 
     try: 
      User.objects.get(username=username, password=password) 
     except User.DoesNotExist: 
      raise forms.ValidationError("Email or Password is incorrect.") 
     return self.cleaned_data 

回答

0

你缺少模板...

from django import template 

context_instance=template.RequestContext(request) 

和.. 没有提及此处使用的上下文...

return render_to_response('login.html', context, context_instance=RequestContext(request)) 
+0

谢谢,但同样的错误发生......任何想法? – stack5914

+0

对不起内容→{} – stack5914

+0

发生的事情:) –