gpt4 book ai didi

Django 重定向到当前页面

转载 作者:行者123 更新时间:2023-12-02 09:08:40 25 4
gpt4 key购买 nike

无论我如何努力尝试并阅读此处的所有问题,我都无法重定向到用户登录后所在的同一页面。我认为现在是我向人们展示我的代码的时候了,所以如果您可以指出错误。谢谢。

我的登录网址(在base.html模板中):这存在于每个页面上。用户登录后更改为注销。我读到我必须传递一个参数,例如“下一个”,如下所示:

 <a href="/login/?next={{request.path}}">Login</a>

但是,

*{{request.path}} 始终为空。 *

登录 View :

def mylogin(request):
"""login view"""
try:
redirect_to = request.GET.get('next', '/')
except ValueError:
redirect_to = "/"

errors = ''
t = loader.get_template('login.html')


# check for POST data
if request.method == 'POST':
username = request.POST['username']
password = request.POST['password']
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
login(request, user)
# Redirect to a success page.
return HttpResponseRedirect(redirect_to)
else:
c = Context({
'errors':'disabled',
})
return HttpResponse("disabled")
else:
c = Context({
'errors':'incorrect',
})
return HttpResponse(t.render(c))
else:
c = Context({
'errors':None,
})
return HttpResponse(t.render(c))
<小时/>

登录表单,位于login.html模板中

 <form method="post" action="?next={{ redirect_to }}" >
<p><label for="username">Username</p>
<p></label><input type="text" name="username" value="" id="username" /></p>
<p><label for="password">Password</label></p>
<p><input type="password" name="password" value="" id="password" /></p>
<p><input type="submit" value="Login"></p>
</form>

最佳答案

您没有将 request 传递到模板上下文,因此它自然是空的。获取它的最简单方法是使用 RequestContext,它使用内置上下文处理器将变量添加到上下文。

通常的方法是使用带有额外参数context_instance=RequestContext(request)render_to_response。由于某种原因,您要长时间渲染所有模板,因此您需要自己创建该请求上下文。

您还需要将 django.core.context_processors.request 添加到 settings.py 中的 CONTEXT_PROCESSORS 元组中。

关于Django 重定向到当前页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5951580/

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