我已经对这个问题进行了一些搜索并用谷歌搜索了文档,所以我想是时候问了。我正在尝试让我的应用程序在登录后重定向到最后查看的页面。我正在运行django 1.2.4并且到目前为止没有运气。
这个Stack Overflow线程似乎可以解决问题,但我没有成功: Django: Redirect to previous page after login ......
目前从任何视图登录后,我被重定向到:// localhost:1100 / accounts / profile /
settings.py有以下建议代码: “django.core.context_processors.request”,
将此作为我的登录按钮链接:
<a href="{% url django.contrib.auth.views.login %}?next={{request.path}}">login</a>
我还确保在views.py文件中导入RequestContext: 来自django.template import RequestContext
我觉得这不起作用。我现在也注意到了 登录URL中包含部分下一个URL: // localhost:1100 / accounts / login /?next =
连连呢? 提前致谢!
答案 0 :(得分:5)
正如sdolan所说,你可以使用login_required装饰器,但还有一些可能性:
表单操作:
<form method="post" action="{% url django.contrib.auth.views.login %}?next={{request.path}}">
下一个隐藏字段:
<input type="hidden" name="next" value="{{request.path}}" />
带有登录表单的链接:
<a href="{% url django.contrib.auth.views.login %}?next={{request.path}}">Login</a>
要使用它们,您必须在相应的视图中传递请求上下文。可以在此处找到执行此操作的示例:http://lincolnloop.com/blog/2008/may/10/getting-requestcontext-your-templates/
答案 1 :(得分:4)
如果您在视图中使用login_required
装饰器,它会自动为您执行此操作。
经验证实了这一点,并在文档中进行了解释:
如果用户未登录,则重定向 到settings.LOGIN_URL,传递 查询中的当前绝对路径 串。例: /帐户/登录/?下一= /轮询/ 3 /.