如果request.Post:在django中对声明的澄清

时间:2015-05-28 23:14:15

标签: python django

假设我有这样的观点:

def home(request, redir_url, template = 'example/home.html')
    if request.session["profile_name"] and request.session["token"]:
            return HttpResponseRedirect(redir_url)
    if request.POST:
        driver = Facebook()
        res = driver.RetLoginUrl(redir_url)
        return HttpResponseRedirect(res)

    return render(request, template)

在这个视图中,首先我检查会话变量,如果用户已经登录,我会重定向到欢迎页面,如果没有,我有一个登录按钮,用户可以用Facebook授权我的应用程序。

模板有一个form method = POST,并以登录按钮作为输入。

我的问题是,当视图末尾有一个语句返回渲染(请求,模板)时,if语句(如果是request.POST)是如何执行的。在呈现页面之后,即返回render()语句已经执行,视图函数是否应该终止,因此没有将表单响应提交给视图?

基本上,我只是想了解django视图的执行流程。是先执行return render()语句,然后等待用户输入吗?

1 个答案:

答案 0 :(得分:1)

应该是

if request.method == 'POST'

每次访问为此视图配置的URL时,都会执行此句子。如果请求的方法是POST,当用户按下按钮时,执行if内的代码并返回HttpResponse

在示例中,行render(request, template)仅在方法为POST(可能是GET,PUT,DELETE等)时执行。

最后,您可以使用Django Login Decorator来避免会话变量检查