2011-09-02 93 views
0

目標如何配置登錄表單重定向到特定的url?

當用戶訪問http://myserver/accounts/login/?next=/sentry,就應該及時登錄憑證,然後重定向到/sentry。這是如果您使用裝飾器login_required的行爲。我沒有使用這個裝飾器。

症狀

目前,登錄成功後,將其重定向到/accounts/profile即使設置了next查詢參數。

問題

  1. 我在哪裏可以覆蓋默認重定向URL /accounts/profile
  2. 爲什麼傳遞next不夠?
+0

你可以通過提供一些你的urls.py文件和你正在使用的模板來幫助你。 –

回答

2

要覆蓋默認重定向目標,請設置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

1

首先,你可以通過在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