If/else 在执行 if 语句之前赋值的变量
If/else variable assigned before if statement executed
number_of_discs
的第一个实例从另一个页面接收数据,该值在表单中可见。
#####Results Page
@app.route('/results', methods=['GET', 'POST'])
def results():
form = SendForm()
number_of_discs = request.args.get('number_of_discs', '')
在下面的代码中,如果函数 form.validate_on_submit()
returns False
,我希望 number_of_discs
变量重新分配已输入到表单中的值修改原始数据。
#####Results Page
@app.route('/results', methods=['GET', 'POST'])
def results():
form = SendForm()
number_of_discs = request.args.get('number_of_discs', '')
if form.validate_on_submit():
try:
models.insert(form)
except:
print ("hasn't worked")
else:
return redirect(url_for('success'))
else:
number_of_discs = form.number_of_discs.data
return render_template(
'results.html', title='Results', number_of_discs=number_of_discs, form=form
)
它在一定程度上起作用,因为无论在表单中键入什么,变量都会被重新分配。但是,我现在的问题是,当我第一次加载页面时,else
语句中的 number_of_discs
变量似乎被初始化为默认值,而不是 number_of_discs
的第一个声明变量(即来自另一页的数据)。所以总而言之,if
/else
语句中的变量似乎先于为它赋值的 before/outside 变量。
您可以避免覆盖默认值
仅当请求为 'POST'
:
时才执行当前 if/else
@app.route('/results', methods=['GET', 'POST'])
def results():
...
number_of_discs = request.args.get('number_of_discs', '')
if request.method == 'POST':
if form.validate_on_submit():
...
else:
...
number_of_discs
的第一个实例从另一个页面接收数据,该值在表单中可见。
#####Results Page
@app.route('/results', methods=['GET', 'POST'])
def results():
form = SendForm()
number_of_discs = request.args.get('number_of_discs', '')
在下面的代码中,如果函数 form.validate_on_submit()
returns False
,我希望 number_of_discs
变量重新分配已输入到表单中的值修改原始数据。
#####Results Page
@app.route('/results', methods=['GET', 'POST'])
def results():
form = SendForm()
number_of_discs = request.args.get('number_of_discs', '')
if form.validate_on_submit():
try:
models.insert(form)
except:
print ("hasn't worked")
else:
return redirect(url_for('success'))
else:
number_of_discs = form.number_of_discs.data
return render_template(
'results.html', title='Results', number_of_discs=number_of_discs, form=form
)
它在一定程度上起作用,因为无论在表单中键入什么,变量都会被重新分配。但是,我现在的问题是,当我第一次加载页面时,else
语句中的 number_of_discs
变量似乎被初始化为默认值,而不是 number_of_discs
的第一个声明变量(即来自另一页的数据)。所以总而言之,if
/else
语句中的变量似乎先于为它赋值的 before/outside 变量。
您可以避免覆盖默认值
仅当请求为 'POST'
:
if/else
@app.route('/results', methods=['GET', 'POST'])
def results():
...
number_of_discs = request.args.get('number_of_discs', '')
if request.method == 'POST':
if form.validate_on_submit():
...
else:
...