假设我有这样的观点:
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()语句,然后等待用户输入吗?
答案 0 :(得分:1)
应该是
if request.method == 'POST'
每次访问为此视图配置的URL时,都会执行此句子。如果请求的方法是POST,当用户按下按钮时,执行if
内的代码并返回HttpResponse
在示例中,行render(request, template)
仅在方法为POST(可能是GET,PUT,DELETE等)时执行。
最后,您可以使用Django Login Decorator来避免会话变量检查