登录后重定向到最后一个视图

问题描述:

我已经与这一个搏斗了一下,并用Google搜索了一遍,所以我猜它有时间去问。我试图让我的应用程序重定向到登录后最后查看的页面。我正在运行django 1.2.4,迄今为止没有运气。登录后重定向到最后一个视图

这个堆栈溢出线程好像它会做的伎俩,但我还没有成功,与它://本地主机:1100从我重定向到任何视图登录后 Django: Redirect to previous page after login ...

目前/帐号/资料/

settings.py有这个建议代码: “django.core.context_processors.request”,

以此作为我的登录按钮链接: <a href="{% url django.contrib.auth.views.login %}?next={{request.path}}">login</a>

我也确信导入的RequestContext在我views.py文件: 从django.template进口的RequestContext

我得到这是行不通的印象。我也注意到现在 登录网址中有一个部分下一个网址: // localhost:1100/accounts/login /?next =

建议? 在此先感谢!

如果您在视图上使用login_required装饰器,它会自动为您执行此操作。

这是由经验所证实,并在文档解释说:

如果用户没有登录,重定向到 settings.LOGIN_URL,路过 当前绝对路径查询 字符串。例如: /accounts/login /?next =/polls/3 /。

+0

感谢sdolan,所以我是用我的观点类似这样的文字装饰:@login_required 高清wine_review_page(请求,wine_id):这是不正确的方式去吗?我不知道如何设置下一个链接,我猜。 – bmartinek 2011-01-07 05:35:48

正如sdolan说,你可以使用login_required装饰,但也有一些更possiblities:

  • 表单操作:

    <form method="post" action="{% url django.contrib.auth.views.login %}?next={{request.path}}"> 
    
  • 下一个隐藏字段:

    <input type="hidden" name="next" value="{{request.path}}" /> 
    
  • With al墨到登录表单:

    <a href="{% url django.contrib.auth.views.login %}?next={{request.path}}">Login</a> 
    

对于使用它们,则必须通过请求上下文中的相应视图。这样的例子可以在这里找到:http://lincolnloop.com/blog/2008/may/10/getting-requestcontext-your-templates/

+0

+1如果您使用的是django股票登录系统,则此方法为'href =“{%url django.contrib.auth.views.login%}?next = {{request。}}“> Login'是最可靠的一个imo,其他两种方法由于[**这个bug **](https://*.com/q/22288861/4334743)而存在问题。 – AneesAhmed777 2017-08-18 16:24:18