登录后重定向到上次查看

时间:2011-01-05 04:14:22

标签: django redirect

我已经对这个问题进行了一些搜索并用谷歌搜索了文档,所以我想是时候问了。我正在尝试让我的应用程序在登录后重定向到最后查看的页面。我正在运行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 =

连连呢? 提前致谢!

2 个答案:

答案 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 /.

相关问题