我编写了一个控制功能activate
来确认用户的电子邮件及其激活码。
def activate(request, a_code):
"""
Activate User's Account by code from his email.
"""
try:
user = User.objects.get(activatecode__code=a_code)
user.is_active = True
context = {}
return render(request, "user/success.html", context)
time.sleep(5)
return redirect("/")
except DoesNotExist:
context = {}
return render(request, "user/failure.html", context)
用户成功激活帐户后,他将被重定向到主页。
然而,双return
s并没有像我预期的那样正常工作。
如何处理这样的背景?
答案 0 :(得分:1)
您可以将javascript重定向添加到成功模板,而不是双重返回,因为第二次返回永远不会到达,所以请检查question:
<script type="text/javascript">
setTimeout(function() {
window.location.href = "/";
}, 5000);
</script>
您也可以尝试使用messages framework进行消息呈现。
答案 1 :(得分:0)
user = User.objects.get(activatecode__code=a_code)
user.is_active = True
context = {}
return render(request, "user/success.html", context) # First
time.sleep(5)
return redirect("/") # Second
第一个返回语句后的代码为unreachable
。从函数返回后,执行游标返回给调用者,之后的任何代码都不会被执行。
因此,在您的情况下,sleep
和第二个return
永远不会被执行。
如果您想重定向用户,则只需使用redirect()
参考:https://docs.djangoproject.com/en/2.0/topics/http/shortcuts/#redirect
答案 2 :(得分:0)
你的问题是,当方法运行并评估第一个返回时,这结束了此方法的线程执行,即第一次返回之后的指令永远不会被评估为什么不能重定向{{1} }
您的代码在此结束