gpt4 book ai didi

Django:HttpResponseRedirect 没有通过 RequestContext()?

转载 作者:可可西里 更新时间:2023-11-01 15:27:25 25 4
gpt4 key购买 nike

基本上,我试图将未登录的人重定向到登录页面。

我目前使用的是:

return render_to_response('login.html', context_instance=RequestContext(request))

但这会在主页上留下 url。我想让它重定向到/accounts/login/,但是当我使用

return HttpResponseRedirect('/accounts/login/')

我得到了错误

Key 'username' not found in <QueryDict: {}>

我理解这意味着我确实需要

context_instance=RequestContext(request))

有没有正确的重定向,并且仍然传递 RequestContext?

最佳答案

RequestContext 仅用于在呈现模板时将值传递给模板引擎。目标 View 不应依赖于原始 View 中的 RequestContext,它应该能够生成自己的 RequestContext。

然而,在某些情况下,您需要像这样在 View 之间传递值。在这些情况下,您可以使用查询字符串值来做到这一点。例如……

def originating_view(request, *args, **kwargs):
return HttpResponseRedirect('/accounts/login/?username=%s&next=%s' % (username, request.path)

def destination_view(request, *args, **kwargs):
# Get the username from the querystring
username = request.GET.get('username', None)
next = request.GET.get('next', '/')

if username:
# ...

(请注意,我假设您要保留用户名的原因是将其预填充到登录表单中。如果您正在执行实际登录,您将希望改用 POST这样用户名和密码就不会以纯文本形式记录在 URL 中)。

关于Django:HttpResponseRedirect 没有通过 RequestContext()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2717898/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com