2016-05-25 65 views
-2

我的任務是僅在登錄/註冊後才能獲得主頁視圖。例如,如果我們去example.com,我們應該得到登錄頁面。如果我們之前沒有註冊,然後按登錄按鈕(在輸入任何用戶名和密碼之後,因爲此刻我還沒有完成註冊按鈕)必須在註冊頁面上移動我們。只能通過登錄/註冊才能訪問主頁

下面的代碼是:

views.py:

from django.shortcuts import render, redirect 
from django.core.urlresolvers import reverse 
from django.contrib.auth import authenticate, login 
from django.contrib.auth.forms import AuthenticationForm, UserCreationForm 

def my_login(request): 
    if request.method == 'POST': 
     form = AuthenticationForm(request.POST) 
     if form.is_valid(): 
      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(request, user) 
        return render(request, 'home.html', {}) 

       else: 
        # Return a 'disabled account' error message 
        pass 
      else: 
       # send to signup 
       return render(request, 'signup.html', {}) 
    else: 
     form = AuthenticationForm() 
     return render(request, 'login.html', {'form': form}) 

,這是我的login.html:

{% load staticfiles %} 

{% if form.errors %} 
<p>Your username and password didn't match. Please try again.</p> 
{% endif %} 

{% if next %} 
    {% if user.is_authenticated %} 
    <p>Your account doesn't have access to this page. To proceed, 
    please login with an account that has access.</p> 
    {% else %} 
    <p>Please login to see this page.</p> 
    {% endif %} 
{% endif %} 

<form method="post" action="{% url 'my_login' %}"> 
{% csrf_token %} 
<table> 
<tr> 
    <td>{{ form.username.label_tag }}</td> 
    <td>{{ form.username }}</td> 
</tr> 
<tr> 
    <td>{{ form.password.label_tag }}</td> 
    <td>{{ form.password }}</td> 
</tr> 
</table> 

<input type="submit" value="Login" /> 
<input type="hidden" name="next" value="{{ next }}" /> 
</form> 

目前所顯示的故障(hiting登錄按鈕後) -

ValueError at/login/ 視圖evr.views.my_login沒有返回HttpResponse對象。它返回None而不是。

但重點不僅僅是關於這個錯誤。如果我的方向是正確的,我一般都不明白?

+0

由於錯誤是在你的登錄視圖,你或許應該表現出來,你不牛逼hink? –

+0

尋求調試幫助的問題(「爲什麼不是這個代碼工作?」)必須包含所需的行爲,特定的問題或錯誤以及在問題本身**中重現**所需的最短代碼。沒有明確問題陳述的問題對其他讀者無益。請參閱:[mcve] – Sayse

+0

我把我的代碼放在http://pastebin.com/e5LCJmgH ..還是僅在此處放置代碼? – Dennis

回答

1

您的登錄網址中有目前沒有返回響應,所以你需要決定哪些需要顯示時,兩條可能的路徑:

  • 形式是無效
  • 用戶不積極

所有視圖必須返回響應對象

相關問題