當用戶訪問http://myserver/accounts/login/?next=/sentry
,就應該及時登錄憑證,然後重定向到/sentry
。這是如果您使用裝飾器login_required
的行爲。我沒有使用這個裝飾器。
症狀
目前,登錄成功後,將其重定向到/accounts/profile
即使設置了next
查詢參數。
問題
- 我在哪裏可以覆蓋默認重定向URL
/accounts/profile
? - 爲什麼傳遞
next
不夠?
當用戶訪問http://myserver/accounts/login/?next=/sentry
,就應該及時登錄憑證,然後重定向到/sentry
。這是如果您使用裝飾器login_required
的行爲。我沒有使用這個裝飾器。
症狀
目前,登錄成功後,將其重定向到/accounts/profile
即使設置了next
查詢參數。
問題
/accounts/profile
?next
不夠?要覆蓋默認重定向目標,請設置LOGIN_REDIRECT_URL
設置,默認設置爲/accounts/profile
。
https://docs.djangoproject.com/en/dev/ref/settings/#std:setting-LOGIN_REDIRECT_URL
你用你自己的觀點和login()
功能我不能回答不知道你是如何登錄用戶的問題的另一部分。?在這種情況下,您需要自己處理next
參數。
如果您使用通用視圖,則可以傳遞redirect_field_name
參數,該參數默認爲「下一個」。
https://docs.djangoproject.com/en/dev/topics/auth/#django.contrib.auth.views.login
首先,你可以通過在settings.py設置LOGIN_REDIRECT_URL
覆蓋默認重定向URL。
回答問題的第二部分 - 您需要確保登錄模板中包含next
表單中的隱藏輸入。你的模板是什麼樣的?它需要包含這樣的事情:
<form method='post'>{% csrf_token %}
{{ form.as_p }}
<input type="hidden" name="next" value="{{ next }}">
<input type="submit" value="Log in" class="big_button">
</form>
如果您已經通過redirect_field_name
作爲參數傳遞給登錄視圖,那麼你就需要一個作爲輸入的名稱,而不是next
。
你可以通過提供一些你的urls.py文件和你正在使用的模板來幫助你。 –