如果在if语句执行之前分配了/ else变量

时间:2017-07-04 12:42:34

标签: python python-3.x if-statement flask flask-wtforms

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()返回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

    )

它的作用在一定程度上,无论输入到表单中的是什么,都会重新分配变量。但是,我现在的问题是,当我第一次加载页面时,number_of_discs语句中的else变量似乎被初始化为默认值,而不是number_of_discs的第一个声明变量(即来自另一页的数据)。总而言之,if / else语句中的变量似乎位于在其之前/之外分配的变量之前。

1 个答案:

答案 0 :(得分:1)

您可以避免覆盖该默认值 仅在请求为if/else时执行当前'POST'

@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:
         ...