3

我打开浏览器,尝试访问我的 Django 站点。我退出了我的帐户,所以我被重定向到我的登录页面,我将要访问的页面作为 GET 参数。

http://website.com/login/?next=/customer/7/54

但是,当我输入登录信息时,我会被重定向到:

http://website.com/

即使,我试图达到:

http://website.com/customer/7/54

/customer/7/54 指向确实具有 @login_required 装饰器的视图,但我假设在我登录后它仍会指向该视图。这是怎么回事?

编辑:所以我意识到,我有一个隐藏的输入标签:

    <input type="hidden" name="next" value='/'>

但是,如何将 GET 参数 '/customer/7/54/ 传入登录模板?

4

2 回答 2

8

根据您编辑的问题,您可以在登录页面获取下一个参数,如下所示:

<input type="hidden" name="next" value="{{ next }}">

标准 djangodjango.contrib.auth.views.loginnext变量直接传递给模板上下文。另外,阅读有关用户身份验证的文档:

您还可以通过将 redirect_field_name 传递给视图来指定包含登录后重定向到的 URL 的 GET 字段的名称。默认情况下,该字段被调用 next。

但你可能不需要改变这一点。

于 2012-09-21T20:31:53.997 回答
1

对于使用自己视图的人。您必须将“下一个”发送到您的模板

def login_view(request):
    '''..your logic..'''
    ctx = {'form':form,'next':next}
    return render_to_response('login.html',ctx,context_instance=RequestContext(request))
于 2015-05-01T17:58:30.900 回答