【发布时间】:2022-01-19 04:33:04
【问题描述】:
我创建了一个 <form> 来更新 HTML <table> 中的值,但是对于我的下拉表单字段,如果我在单击提交按钮之前不更新它们,它们会抛出此错误:
werkzeug.exceptions.BadRequestKeyError: 400 Bad Request:
The browser (or proxy) sent a request that this server could not understand.
KeyError: 'eligible_applicant_category'
换句话说,如果我更改下拉字段中的选择,它会成功更新,但是如果我保持选择不变,则会引发上述错误。
缩小的代码只显示导致错误的下拉字段:
类视图:
class FundingSource(db.Model):
id = db.Column(db.Integer, primary_key=True)
eligible_applicant_category = db.Column(db.Text(), nullable=True)
eligible_cost = db.Column(db.Text(), nullable=True)
status = db.Column(db.String(100), nullable=True)
notes = db.Column(db.Text(), nullable=True)
烧瓶视图:
@main.route("/eligibleCostMaster", methods=['GET'])
def elig_cost():
all_data = FundingSource.query.all()
return render_template('eligibleCostMaster.html', title='Eligible Cost Master', fsources=all_data)
@main.route("/updateElig", methods=['GET', 'POST'])
def updateElig():
if request.method == 'POST':
my_data = FundingSource.query.get(request.form.get('id'))
my_data.eligible_applicant_category = request.form['eligible_applicant_category']
my_data.eligible_cost = request.form['eligible_cost']
my_data.status = request.form['status']
my_data.notes = request.form['notes']
db.session.commit()
flash("Eligible Cost Updated Successfully")
return redirect(url_for('main.elig_cost'))
模板(表单)视图:(仅显示下拉表单字段之一的代码)
<form action="{{url_for('main.updateElig')}}" method="POST">
<div class="form-group">
<label>Eligible Applicant Category:</label>
<select name="eligible_applicant_category" class="form-control">
<option name="eligible_applicant_category" disabled hidden selected value="{{row.eligible_applicant_category}}" SELECTED>{{row.eligible_applicant_category}}</option>
<option value="Federal Department/Agency">Federal Department/Agency</option>
<option value="Local Department/Agency">Local Department/Agency</option>
<option value="Locality">Locality</option>
<option value="Metropolitan City">Metropolitan City</option>
<option value="State">State</option>
<option value="State Department/Agency">State Department/Agency</option>
<option value="Transportation Entity">Transportation Entity</option>
<option value="Tribe">Tribe</option>
</select>
</div>
如果我的问题令人困惑,请告诉我,我对这一切都比较陌生。蒂亚!!
编辑:
解决了问题!!我只需要将标签中的“禁用隐藏选定”更改为“隐藏”
【问题讨论】: