2014-12-01 99 views
0

只要用戶輸入一個空密碼(或用戶名)和登錄,它顯示了這個錯誤:views.log_in沒有返回HttpResponse對象

ValueError at/
The view views.log_in didn't return an HttpResponse object. 

代碼:

def log_in(request): 
    if request.method == 'POST': 
     form = LoginForm(request.POST) 
     if form.is_valid(): 
      user = form.cleaned_data['username'] 
      pword = form.cleaned_data['password'] 
      user = authenticate(username=user, password=pword) 
      if user is not None: 
       login(request, user) 
       if request.GET.get('next') is not None: 
        return HttpResponseRedirect(request.GET.get('next')) 
       else: 
        return HttpResponseRedirect('/home/') 
      else: 
       return render(request, 'login.html', { 'logform': form, 'error': True}) 
    else: 
     if request.user.is_authenticated(): 
      return HttpResponseRedirect('/home/') 
     else: 
      form = LoginForm() 
      return render(request, 'login.html', { 'logform': form, }) 

會如何我修復這個錯誤?謝謝。

回答

0

你有沒有返回值時,形式是無效的。通常的選擇是去縮進return render(...行,以便執行您的重定向中的任何時間沒有被觸發,致使無效形式的錯誤:

def log_in(request): 
    if request.method == 'POST': 
     # as above 
    else: 
     if request.user.is_authenticated(): 
      return HttpResponseRedirect('/home/') 
     else: 
      form = LoginForm() 
    return render(request, 'login.html', { 'logform': form, }) 
+0

我也這樣,它不顯示,如果錯誤出現沒有輸入密碼或用戶名。不過,如果我錯了輸入用戶名和密碼,它顯示了一個錯誤。 – guy1234567 2014-12-01 20:42:19

+0

您是否正在檢查表單的錯誤,或者當您的用戶名/密碼未通過身份驗證時,您是否正在查找上下文中放置的錯誤'= True'值?如果您正在查看該變量以顯示錯誤,您也可以在表單無效時設置該值,或者您可以讓模板檢查「form.is_bound而不是form.is_valid」。 – 2014-12-01 20:47:49

+0

我找不到模板檢查的例子form.is_bound,而不是form.is_valid。請指導我? – guy1234567 2014-12-01 20:57:56

相關問題