2011-05-16 323 views
5

我試圖用django創建一個登錄和註銷頁面。我遇到的問題是,當我提交表單時,它不會顯示我指定的網址。當我點擊登錄按鈕時,我想要它去http://127.0.0.1:8000/home/,但是,它會去http://127.0.0.1:8000/?next=/home/Django登錄/註銷

下面是我的view.py我的登錄/註銷代碼:

def login(request): 
    def errorHandler(error): 
    return render_to_response('login.html', {'error' : error}) 
    if request.method == 'POST': 
     username = request.POST['username'] 
     password = request.POST['password'] 
     user = authenticate(username = username, password = password) 
     if user is not None: 
      if user.is_active: 
       authLogin(request, user) 
       fullName = user.get_full_name 
       return render_to_response('logged_in.html', {'full_name': fullName}) 
      else: 
       error = 'Account disabled.' 
     return errorHandler(error) 
     else: 
      error = 'Invalid details entered.' 
     return errorHandler(error) 

    return render_to_response('login.html') 

@login_required 
def logout(request): 
    authLogout(request) 
    return render_to_response('logged_in.html') 

我的login.html:

{% extends "base.html" %} 

{% block content %} 

    {% if error %} 
    <p><b><font color="red">Error: </font></b>{{ error }}</p> 
    {% endif %} 

    <form action="/home/" method="post"> 
    <label for="username">User name:</label> 
    <input type="text" name="username" value="" id="username"> 
    <label for="password">Password:</label> 
    <input type="password" name="password" value="" id="password"> 

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

{% endblock %} 

我logged_in.html:

{% extends "base.html" %} 

{% block name %}{{ full_name }} is {% endblock %} 

{% block content %} 
    <p><a href='/'>Logout</a></p> 
{% endblock %} 

網址:

(r'^$', 'myapp.views.login'), 
(r'^home/$', 'myapp.views.logout'), 

請幫

回答

2

的問題是,你不實際登錄用戶,形式發送未經驗證的用戶/home/,無法處理,因爲它需要登錄。 :-)因此,它將用戶重定向到登錄視圖,將參數的目標存儲在next中。

解決方案<form action="" method="post">

+0

工程。但是,由於它仍然是http://127.0.0.1:8000(不更改URL),因此它實際上不使用註銷視圖。它只是去那個頁面。 (註銷視圖設置爲/ home /) – tester 2011-05-16 09:01:06

+0

'LOGIN_REDIRECT_URL ='/ home /''settings.py – DrTyrsa 2011-05-16 09:04:32

+0

我以前試過,但url仍然是127.0.0.1:8000。我必須在我的視圖中指定重定向網址嗎?或者它可能與render_to_response有關?我試過HttpResponseRedirect,但是我需要傳遞給模板的內容,就像你可以在我的代碼中看到的那樣。 – tester 2011-05-16 09:09:43