【发布时间】:2022-06-29 03:43:37
【问题描述】:
我使用 Flask 和 FlaskForm 创建了一个简单的 CRUD 应用程序。我有一个表格,其中显示了来自数据库的姓氏、名字、出生日期和性别。每个名称旁边都有标记为删除和更新的链接。当您单击更新时,您将被路由到更新页面,其中包含应填充与姓氏、名字、出生日期和性别对应的表单字段的表单。性别是一个带有男性和女性选项的选择字段,我如何从数据库中填充它?使用 FlaskForm,我尝试了 {{form.sex(value=user_to_update.sex)}},但它没有填充。
这是我的更新路线:
@app.route('/update/<int:id>', methods=['GET', 'POST'])
def update(id):
form = Form()
user_to_update = TblPatient.query.get_or_404(id)
if request.method == 'POST':
user_to_update.lastname = form.lastname.data
user_to_update.firstname = form.firstname.data
user_to_update.birthdate = form.birthdate.data
user_to_update.sex = form.sex.data
db.session.commit()
return redirect(url_for('add_record'))
return render_template('update.html', form=form, user_to_update=user_to_update)
这是 FlaskForm 部分:
class Form(FlaskForm):
lastname = StringField('Last Name', validators=[DataRequired()])
firstname = StringField('Firstname', validators=[DataRequired()])
birthdate = DateField('Date of Birth', format='%Y-%m-%d', validators=[DataRequired()])
sex = SelectField('Sex',
choices=['Select', 'Male', 'Female'],
default='Select',
validators=[DataRequired()])
submit = SubmitField('submit')
这是我的 update.html,其中填充了除性别之外的表单字段:
<form action="{{request.path}}" method="post">
{{form.hidden_tag()}}
<fieldset>
<legend>Patient Info</legend>
<p>
{{form.lastname.label}} <br/>
{{form.lastname(value=user_to_update.lastname, size=30)}}
</p>
<p>
{{form.firstname.label}} <br/>
{{form.firstname(value=user_to_update.firstname, size=30)}}
</p>
<p>
{{form.birthdate.label}} <br/>
{{form.birthdate(value=user_to_update.birthdate)}}
</p>
<p>
{{form.sex.label}} <br/>
{{form.sex(value=user_to_update.sex)}}
</p>
</fieldset>
<br/>
{{form.submit}}
</form>
这是主页:
当我点击更新时,它会将我重定向到有问题的更新页面。如何根据 FlaskForm 填充性别字段?
【问题讨论】:
标签: flask jinja2 flask-sqlalchemy flask-wtforms flask-restful