2017-05-04 72 views
0

我是Django的新手。我需要在登錄後編寫登錄功能以重定向到最初請求的URL。我環顧四周,在stackoverflow線程上找到了以下內容。在Django中登錄後重定向到最初請求的頁面

django redirect after login not working "next" not posting?

我看到Django的機制的文檔以下

login_required()進行以下操作:

如果用戶沒有登錄,重定向到settings.LOGIN_URL,路過 查詢字符串中的當前絕對路徑。例如: /accounts/login /?next =/polls/3 /。

我還讀了django.contrib.auth包的login()方法將next傳遞給模板。所以我在我的視圖中定義了login()函數(我不能使用'auth'包中的那個,因爲我需要一些定製)。

def login(request): 
    next = request.GET['next'] 
    return render(request, 'user/login.html', {'next': next}) 

在我的模板

<form method="post" action="{% url 'user:login_user' %}" > 
    {% csrf_token %} 
<p><label for="id_username">Username:</label> <input autofocus="" id="id_username" maxlength="254" name="username" type="text" required /></p> 
<p><label for="id_password">Password:</label> <input id="id_password" name="password" type="password" required /></p> 
    <input type="hidden" name="next" value="{{next}}" /> 
    <button type="submit">Login</button> 
    </form> 

在我login_user()函數,如果我看到未來的價值是存在的,我重定向到URL一旦我已經登錄的用戶。這個作品對我來說很好。

但是,上面的線程中呈現的解決方案涉及更多一點。我很好奇爲什麼有必要這樣做。這裏錯過了什麼?

感謝

回答

0

試着改變你的

<button type="submit">Login</button> 

<input type="submit" value="Login" /> 
+0

其實,我並沒有正確地提到我的代碼工作正常。我很好奇爲什麼你需要在其他線程中提出所有建議才能使其工作。我更新了我的問題。 – user2125853