gpt4 book ai didi

django登录后返回上一页

转载 作者:行者123 更新时间:2023-12-02 09:50:41 24 4
gpt4 key购买 nike

如果我的用户未登录并遇到@login_required装饰器,它将被发送到我的login_user View 。登录后,它将发送到我的索引。我怎样才能重定向到上一页。

def login_user(request):
login_form = LoginForm(request.POST or None)
if request.POST and login_form.is_valid():
user = login_form.login(request)
if user:
login(request, user)
if request.POST['next'] != "":
return HttpResponseRedirect(request.POST['next'])
else:
return HttpResponseRedirect(reverse('index'))

#return render(request, 'login.html', {'login_form': login_form })
return render_to_response('login.html', {'login_form': login_form}, context_instance=RequestContext(request))

现在我一直在看:Django: Redirect to previous page after login但我不知道如何使用它,因为我没有使用链接而是使用装饰器发送它们登录

最佳答案

login_required 装饰器注释登录 URL,在 GET 参数中添加 next 字段。请参阅login_required .

例如如果 LOGIN_URL/login 则变为 /login?next=/polls/3/vote

这将传递到您使用它的登录 View

  1. 以请求感知方式在 GET 或 errorneos POST 时呈现登录页面。请注意,您需要将请求变量传递给模板 rendercontext。请参阅RequestContextrender_to_response .

    return render_to_response(
    'login.html',
    my_data_dictionary,
    context_instance=RequestContext(request)
    )
  2. 在模板中将这样的行添加到登录表单

    <input type="hidden" name="next" value="{{ next }}">
  3. 最后,在成功 POST 后,将此值用于 HttpResponseRedirect,可以是 next 的值,也可以是 LOGIN_REDIRECT_URL(如果没有 LOGIN_REDIRECT_URL)next 值存在。请参阅HttpResponseRedirect .

    ... user was succesfully authenticated...
    if request.POST["next"] is Not "":
    HttpResponseRedirect(request.POST["next"])
    else:
    HttpResponseRedirect(settings.LOGIN_REDIRECT_URL)

我希望这能澄清一些事情。

关于django登录后返回上一页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22985372/

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