Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

flask-bootstrap quick_form missing Submit button

Trying to use flask-bootstrap quick_form.

HTML template my-form.j2:

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

{% block content %}

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

{% endblock content %}

Form class:

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()])

Form handler:

@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)

Unfortunately I am not seeing a Submit button rendered, even if I add {{ form.submit }} to my table. Any ideas?

like image 983
TrickiDicki Avatar asked Jul 28 '26 03:07

TrickiDicki


1 Answers

The answer of @atwalsh work just fine, but you can also put your submit button in your class, and then call it in your template:

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')

And then put in your template:

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

Edit: You also need to import the SubmitField method:

from wtforms import SubmitField
                                    
like image 85
maje Avatar answered Jul 30 '26 23:07

maje