在Pinax中,如果我有一个需要登录的链接(即,我使用@login_required装饰器),我如何在登录后重定向到该链接,而不是被重定向到"下一步是什么"?
谢谢
只需设置LOGIN_REDIRECT_URL设置。
编辑似乎Pinax还支持另一种设置,LOGIN_REDIRECT_URLNAME,这似乎与LOGIN_REDIRECT_URL做同样的事情,但被设置为url名称,大概这样你就不必在settings.py文件中调用reverse
了。
对于更多的"动态"重定向,pinax.apps.account.views.login视图使用pinax.apps.account.utils。get_default_redirect从以下内容查找重定向URL:
- 一个名为'next'的GET或POST参数(默认情况下,尽管可以自定义)。 LOGIN_REDIRECT_URL设置LOGIN_REDIRECT_URLNAME设置
get_default_redirect
中的代码实际上是在会话中检查'redirect_to'键,该键可能持有设置中定义的值之一,因为该方法没有尝试自己查看django.conf.session
。然而,docstring声称它会检查这些设置,而这似乎就是您在项目中遇到的情况。
将以下隐藏输入添加到登录表单中的templates/account/login.html文件中:
<input type="hidden" name="next" value="{{ request.GET.next }}" />
应该可以了。在阅读这里找到的文档后提出了解决方案:http://docs.djangoproject.com/en/dev/topics/auth/