【发布时间】:2019-05-13 08:20:27
【问题描述】:
所以我有一个更新表单端点,它非常大,我尝试了一些方法来动态创建它以压缩我的代码,但我似乎无法弄清楚。
@customers.route("/<int:customer_id>/update_customer", methods=['GET', 'POST'])
# not programmatic - needs work - I do not like this
def update_customer(customer_id):
post = Post.query.get_or_404(customer_id)
if post.author != current_user:
abort(403)
form = CustomerForm()
if form.validate_on_submit():
post.tpi_name = form.tpi_name.data
post.tpi_ref = form.tpi_ref.data
post.company_name = form.company_name.data
post.company_type = form.company_type.data
post.company_reg = form.company_reg.data
post.sic_code = form.sic_code.data
post.vat_number = form.vat_number.data
db.session.commit()
flash("That customer's record has been updated!", 'success')
return redirect(url_for('customers.view_customer', customer_id=post.id))
elif request.method == 'GET':
form.tpi_name.data = post.tpi_name
form.tpi_ref.data = post.tpi_ref
form.company_name.data = post.company_name
form.company_type.data = post.company_type
form.company_reg.data = post.company_reg
form.sic_code.data = post.sic_code
form.vat_number.data = post.vat_number
return render_template('customers/customers.html', form=form, username=current_user.username,image_file=current_user.image_file, email=current_user.email)
假设我们在表单中有 100 多个字段,我将如何更改此代码,这样我就不必明确说明每个字段。
【问题讨论】:
-
所以,你想迭代你的表单域。也许this 会有所帮助?
-
看起来很有希望,那么您将如何在代码中构建它?
-
一个表单实例有一个
populate_obj方法。 -
看起来很酷,有没有机会写一段代码来使用它?
标签: python-3.x flask flask-sqlalchemy flask-wtforms