2012-11-08 85 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

發生的事情:) –