2011-09-02 51 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