我正在研究python Flask。 有一个用几个简单的代码编写的普通模板。 但我不知道。 我认为无论是POST还是GET请求,它都将定向到函数索引,并且它们都将通过相同的路径并获得相同的结果,即render_template(“ index.html”,form = form,name = name)和name = None,并且form是新创建的对象,其form.validate_on_submit()为false。 我不知道该怎么分析。请给我提示。
@app.route("/", methods=["GET", "POST"])
def index():
name = None
form = NameForm()
if form.validate_on_submit():
name = form.name.data
form.name.data = ""
return render_template("index.html", form=form, name=name)
答案 0 :(得分:1)
您是对的-GET
或POST
到/
都将通过该路由处理-区别实际上是浏览器访问页面的方式。
form.validate_on_submit()
的意思是“如果这是一个POST请求并且所有验证都正确,请执行此操作……”
因此,当您第一次通过在浏览器中输入/
来加载http://localhost:5000/
网页时,浏览器将GET
页并进行加载。因此form.validate_on_submit()
将返回False
(因为它是一个GET
请求),而name
的值将是None
。
当您填写表单(假定为<form method="post">
)并点击“提交”时,将会加载相同的路由,但是这次有一个POST
请求-因此{{ 1}}现在将是form.validate_on_submit()
(假设该表单有效),并且True
的值现在将是name
表单字段中提供的值。