我在看flask web development那本书,对通过POST提交表单到服务器的处理逻辑很疑惑。
下面是书中的一个代码片段,是root路径对应的view function:
@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)
页面截图:
我的想法是:当用户第一次访问主页时,浏览器发出GET请求,服务器调用index()函数对该请求进行处理,form
通过NameForm()
创建,此时为空,所以form.validate_on_submit()
返回False。但是,当用户通过POST提交表单的时候,服务器应该还是调用index()函数对该请求进行处理,那这样不是又通过form = NameForm()
创建了一个新表单吗?这个新表单应该还是空的啊?为什么这个时候form.validate_on_submit()
会返回True?
flask是怎么处理如示例代码这种涉及表单的POST请求的?
谢谢。