2

尝试使用flask-bootstrap quick_form。

HTML 模板 my-form.j2:

{% import "bootstrap/wtf.html" as wtf %}
{% extends "layout.j2" %}

{% block content %}

<h1>My form</h1>
{{ wtf.quick_form(form) }}

{% endblock content %}

表格类:

class MyForm(FlaskForm):
    """A WTForm for configuring vehicle information"""
    field1 = StringField('First field', [wtforms.validators.required()])
    field2 = StringField('Second field', [wtforms.validators.required()])
    field3 = StringField('Third field', [wtforms.validators.required()])

表单处理程序:

@app.route('/myform', methods=('GET', 'POST'))
def my_form():
    form = MyForm()
    if form.validate_on_submit():
        myData = form.data
        return redirect("/")
    return render_template("my-form.j2", form=form)

不幸的是,即使我添加 {{ form.submit }}到我的表格中,我也没有看到提交按钮。有任何想法吗?

4

2 回答 2

12

@atwalsh 的答案工作得很好,但你也可以把你的提交按钮放在你的类中,然后在你的模板中调用它:

class MyForm(FlaskForm):
    field1 = StringField('First field', [wtforms.validators.required()])
    field2 = StringField('Second field', [wtforms.validators.required()])
    field3 = StringField('Third field', [wtforms.validators.required()])
--> submit_button = SubmitField('Submit Form')

然后放入您的模板:

{{ wtf.quick_form(form, button_map={'submit_button': 'primary'}) }}
                            ^            ^

编辑:您还需要导入 SubmitField 方法:

from wtforms import SubmitField
                                    
于 2017-10-13T08:33:19.467 回答
1

我相信您可以直接在之后添加输入字段{{ wtf.quick_form(form) }}并将这两个字段都放在 HTML 表单中:

<input class="btn btn-primary" type="submit" value="Login">

例子

{% import "bootstrap/wtf.html" as wtf %}
{% extends "layout.j2" %}

{% block content %}

<h1>My form</h1>
<form method="POST" action="/">
    {{ wtf.quick_form(form) }}
    <input class="btn btn-primary" type="submit" value="Login">
</form>
{% endblock content %}
于 2017-08-30T04:37:34.927 回答