Flask程序中Python代码计算错误
我正在使用HTML输入(文本和按钮)为我的Flask程序中的以下页面生成值:Flask程序中Python代码计算错误,python,html,flask,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:
@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变量
比如说,
请求。表单['call']
作为'yes'
和请求输入数据库。表单['stm']
作为1
输入,但变量comp
仍然计算为150
(而不是300
)
请求。表单['level']
输入为0
,但变量base
仍然计算为400
(而不是0
)
我不在这里包含HTML或SQL代码,因为我认为这不会影响结果,但如果有帮助,我可以编辑并添加它
示例数据库条目:
(ID、姓名、日期、日期2、通话、stm、ryg、费用、奖金、基数、薪酬、罚金、BonuPay、basePay)
(7、u'fj',u'2015-05-27',无,u'yes',1、1、0、0、150.0、0.0、0.0、400.0)
问题是,\u getitem\uuuu>以字符串形式返回值,但您将其与数字进行比较。在Python3中,这会有助于抛出一个TypeError
,但Python2允许您摆脱这个问题。解决办法是:
- 将该值与字符串进行比较:`request.form['stm']=“1”
- 将值转换为数字:
request.form.get('stm',type=int)==1
显然,这意味着它没有击中请求的块。form['stm']==1
条件,因此我认为这不是==1
。我猜呢?这是一个字符串,不是数字。(7,u'fj',u'jf',u'2015-05-27',无,u'cold',1,1,1,0,0,150.0,0.0,0.0,400.0)是的,谢谢。我很困惑,因为正如您从编辑中看到的,它们在数据库中存储为int而不是字符串。但这就解决了这个问题。数据库在可能的情况下强制类型