我打开浏览器,尝试访问我的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 /传入登录模板?
答案 0 :(得分:7)
根据您编辑的问题,您可以在登录页面获取下一个参数,如下所示:
<input type="hidden" name="next" value="{{ next }}">
标准django的django.contrib.auth.views.login
将next
变量直接传递给模板上下文。
另外,阅读有关user authentication的文档:
您还可以指定包含URL的GET字段的名称 通过将redirect_field_name传递给视图来重定向到登录后。 默认情况下,该字段将被调用。
但是,你可能不需要改变它。
答案 1 :(得分:1)
对于使用自己观点的人。你必须发送&#34; next&#34;到您的模板
def login_view(request):
'''..your logic..'''
ctx = {'form':form,'next':next}
return render_to_response('login.html',ctx,context_instance=RequestContext(request))