【发布时间】:2026-01-26 10:45:02
【问题描述】:
我认为这应该很容易,但我无法弄清楚。我正在尝试编写一个退出视图。我收到一个获取请求。通过 urls.py,我呈现了我的退出视图。在这个视图中,我将用户的一些参数保存在数据库中,然后我想将用户重定向到外部 URL。我试过了:
return redirect('http://*.com/')
来自Django documentation。但是,optout 视图呈现训练模板而不是返回重定向,尽管参数按预期保存在数据库中。我的代码如下:
def optout(request):
if (('REMOTE_USER' in request.META and request.META['REMOTE_USER'] != "") or
(request.session.get('userid', False) and request.session['userid'] != "")):
if ('REMOTE_USER' in request.META and request.META['REMOTE_USER'] != ""):
userid = request.META['REMOTE_USER']
if (request.session.get('userid', False) and request.session['userid'] != ""):
userid = request.session['userid']
user = User.objects.get(username=userid)
user.optout = True
user.postpone = False
user.save()
return redirect('http://*.com/')
context = { 'userid': "" }
return render(request, 'games/Training.html', context)
非常感谢任何帮助。
【问题讨论】:
-
你说的不起作用是什么意思? optout 视图呈现的是 Training 模板而不是返回重定向?
-
@JohnGordon,是的。你说得对。尽管参数按预期保存在数据库中,但 optout 视图会呈现训练模板而不是返回重定向。
-
类似问题已回答here
-
如果它正在渲染训练模板,那么很可能您的顶部
if语句评估为 false(因此永远不会调用重定向)。数据库保存必须在其他地方进行。尝试放入一些日志语句。 -
你导入重定向了吗?从 django.shortcuts 导入重定向
标签: python django url redirect external-url