Python Flask表单参数相加出现字符串拼接问题该如何解决?
问题解决方法
异常原因
Flask 中通过 request.form.get() 读取的表单值默认是字符串类型,你直接将两个字符串传入求和函数时,执行的是字符串拼接逻辑,因此会出现1 + 1 = 11的结果,而不是整数加法的结果。
修改方案
方案1:接口层做类型转换(更推荐)
在获取表单参数后先转换为数值类型,同时增加异常捕获避免用户输入非数字内容时报错:
@app.route('/test', methods=["GET", "POST"]) def print_test(): if request.method == "POST": a = request.form.get("aa") b = request.form.get("bb") try: # 转换为整数,需要支持小数可替换为float() a = int(a) b = int(b) except (ValueError, TypeError): return "请输入合法的数字" result = sum_test.sum_t(a, b) return str(result) return render_template('test.html')
方案2:求和函数内部做类型转换
如果希望求和函数兼容字符串类型的数字输入,可以修改sum_test.py的逻辑:
def sum_t(a, b): # 转换为整数后再相加,需要支持小数可替换为float() return int(a) + int(b)
注意:该方案未做异常处理,若输入无法转换为数字的内容会直接抛出异常,更推荐优先使用方案1
内容的提问来源于stack exchange,提问作者uils tumur
相关产品推荐
相关产品推荐

