Flask程序中Python代码中的错误计算

时间:2015-05-13 20:02:51

标签: python html flask

我正在使用HTML输入(文本和按钮)为我的Flask程序中的以下页面生成值:

@app.route('/sale/add', methods=['GET','POST'])
def add_sale():
    if request.method == 'POST':
        comp = 150
        pen = 0
        bonus = 0
        base = 0
        if request.form['stm'] == 1:
            if request.form['call'] == 'yes':
                comp += 150
                if request.form['ryg'] == 0:
                    pen += 150
            elif request.form['call'] == 'no':
                comp += 100
                if request.form['ryg'] == 0:
                    pen += 150
        else:
            comp = 150
            pen = 0
        if request.form['fee'] == 0:
            pen += 50
        if request.form['level'] >= 1:
            base += 400

我正在寻求Python代码的帮助,因为无论通过HTML表单输入什么值,变量comp总是以150出现,而base总是出现为400。这不是HTML表的问题,因为值正确地输入到数据库中。我遇到的只是Python变量。

例如,

request.form['call']作为'yes'输入到数据库中,request.form['stm']输入1但变量comp仍然计算为150 (而不是300

request.form['level']输入为0,但变量base仍然计算为400(而不是0

我不在此处包含HTML或SQL代码,因为我认为这不会影响结果,但如果它有用,我可以编辑并添加它。

示例数据库条目:
(ID,name,date,date2,call,stm,ryg,fee,bonus,base,compPay,penalty,bonusPay,basePay)
(7, u'fj', u'2015-05-27', None, u'yes', 1, 1, 1, 0, 0, 150.0, 0.0, 0.0, 400.0)

1 个答案:

答案 0 :(得分:0)

问题是__getitem__将值作为字符串返回,但您将它们与数字进行比较。在Python 3中,这将有助于抛出TypeError,但Python 2可以让你逃避这一点。解决方案是:

  • 将值与字符串进行比较:`request.form [' stm'] ==" 1"
  • 将值转换为数字:request.form.get('stm', type=int) == 1