我使用Flask-WTForms在Flask中制作了一个简单的表单,父母可以在其中注册自己和他的孩子。父母可以通过单击“添加孩子”按钮来注册任意数量的孩子。WTForms通过使用FieldList功能使此操作非常容易实现。
但是,单击“添加子项”按钮后,页面会自动刷新,因为它向服务器发出了请求。我想使用AJAX请求添加子表单,因此页面不会刷新。
我知道如何执行AJAX请求,发送回响应并将此响应添加到html页面。但是,我不知道如何将条目追加到表单对象并返回页面本身(以某种方式)以及更新后的表单对象。那有可能吗?
我的表格:
class ChildForm(FlaskForm):
name = StringField(label='Name child')
age = IntegerField(label='Age child')
class Meta:
# No need for csrf token in this child form
csrf = False
class ParentForm(FlaskForm):
name = StringField(label='Name parent')
children = FieldList(FormField(ChildForm), label='Children')
add_child = SubmitField(label='Add child')
submit = SubmitField()
Run Code Online (Sandbox Code Playgroud)
我的路线:
@app.route('/register', methods=['GET', 'POST'])
def register():
form = ParentForm()
if form.add_child.data:
form.children.append_entry()
return render_template('register.html', form=form)
if form.validate_on_submit():
# do something with data
return render_template('register.html', form=form)
Run Code Online (Sandbox Code Playgroud)
register.html:
<form action="{{ url_for('register') }}" method="post" id="parentForm">
{{ form.hidden_tag() …Run Code Online (Sandbox Code Playgroud)