提示激活用户的帐户并将其重定向到另一个页面

时间:2018-06-04 03:56:43

标签: django

我编写了一个控制功能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并没有像我预期的那样正常工作。

如何处理这样的背景?

3 个答案:

答案 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} }

您的代码在此结束