Flask同一路由处理2个POST请求时del_meterId返回None问题求助
问题根因
删除表单的输入字段名和后端取值的键名字母大小写不匹配:
你在HTML删除表单的<input>标签里设置的name属性为del_MeterId(字母M大写),但后端代码里用request.form.get('del_meterId')(字母m全小写)取值,前后键名不一致,自然取不到值返回None。
可行修复方案
步骤1:修正HTML删除表单的字段名
将删除表单对应的input标签的name属性改成和后端取值一致的del_meterId:
<!-- 修改前 --> <input type="text" class="form-control" id="del_meterId" name="del_MeterId" placeholder="Enter Meter ID #"> <!-- 修改后 --> <input type="text" class="form-control" id="del_meterId" name="del_meterId" placeholder="Enter Meter ID #">
步骤2(可选优化):优化后端判断逻辑避免报错
原代码直接用request.form["form-group"]取值,如果请求中不存在该键会直接抛出400错误,改用get方法取值更稳妥,优化后的代码参考:
@auth.route('/manage-meters', methods=['GET', 'POST']) @login_required def manage_meters(): if request.method == 'POST': form_type = request.form.get("form-group") if form_type == "add_meterId": meterID = request.form.get('add_meterId') # 此处添加新增电表ID的业务逻辑 elif form_type == "del_meterId": meterID = request.form.get('del_meterId') # 此处添加删除电表ID的业务逻辑 return redirect(url_for('auth.manage_meters'))
内容的提问来源于stack exchange,提问作者Luke Newman
相关产品推荐
相关产品推荐

