Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Checkbox WTForms Example (in Flask)
from flask import Flask, render_template
from flask.ext.wtf import Form, widgets, SelectMultipleField
SECRET_KEY = 'development'
app = Flask(__name__)
app.config.from_object(__name__)
class MultiCheckboxField(SelectMultipleField):
widget = widgets.ListWidget(prefix_label=False)
option_widget = widgets.CheckboxInput()
class SimpleForm(Form):
string_of_files = ['one\r\ntwo\r\nthree\r\n']
list_of_files = string_of_files[0].split()
# create a list of value/description tuples
files = [(x, x) for x in list_of_files]
example = MultiCheckboxField('Label', choices=files)
@app.route('/',methods=['post','get'])
def hello_world():
form = SimpleForm()
if form.validate_on_submit():
print form.example.data
else:
print form.errors
return render_template('example.html',form=form)
if __name__ == '__main__':
app.run(debug=True)
@ondoheer

This comment has been minimized.

Copy link

commented Jul 6, 2014

Thanks, this was precisely what I was looking for

@AlexFrazer

This comment has been minimized.

Copy link

commented Aug 15, 2014

awesome, this helped

@ghost

This comment has been minimized.

Copy link

commented Nov 5, 2014

Thanks for the snippet - was super helpful. Not sure if they modified the flask-wtf extension, but I couldnt import widgets from flask.ext.wtf instead i did it from wtforms directly to get it to work

from wtforms import widgets

@edouardberthe

This comment has been minimized.

Copy link

commented Jun 9, 2015

Thank you, it's exactly what I'm looking for ! :)

However "from flask.ext.wtf import widgets" didn't work for me, because there was neither "ListWidget" nor "CheckboxInput" in it.
I had to do "from wtforms import widgets"

@clime

This comment has been minimized.

Copy link

commented Feb 26, 2016

Thank you, very useful.

@victor-torres

This comment has been minimized.

Copy link

commented Mar 11, 2016

Nice.

@robinclark007

This comment has been minimized.

Copy link

commented Apr 13, 2016

thanks , your helped me

@pavopax

This comment has been minimized.

Copy link

commented May 26, 2016

can anyone post link to what this looks like?

@jonathan-kosgei

This comment has been minimized.

Copy link

commented Sep 7, 2016

How to set the first field in the select box to be disabled and something like 'Choose your option' ?

@chewarer

This comment has been minimized.

Copy link

commented Oct 14, 2016

Thanks for the example.
It's my code:

choices = [(1, 'one'),
           (2, 'two'),
           (3, 'tree')]
resident = MultiCheckboxField('Label',
                              choices=choices, coerce=int)

In my form this checkboxes displayed as intended. But on page with form results, I can render only key of choice(number). How to render a text value of choice?
In Jinja template:

{% if form.resident %}
    {{ form.resident.data }}
{% endif %}
@YohanObadia

This comment has been minimized.

Copy link

commented Jul 30, 2017

Would have been great to see how your example.html is made.

@gianlucascoccia

This comment has been minimized.

Copy link

commented Nov 9, 2017

Very helpful, thank you!

@pickboy900

This comment has been minimized.

Copy link

commented Jan 25, 2018

You don't know how valuable it is for me.

Thanks

@insomniac807

This comment has been minimized.

Copy link

commented Mar 22, 2018

Yeah I would like to see how it is rendered in the html template. For me the border only surrounds the first option which makes it look very messy. a shame because the rest works beautifully

@Skillz-Interface

This comment has been minimized.

Copy link

commented Apr 10, 2018

Thank you

@samuelvarghese

This comment has been minimized.

Copy link

commented Aug 3, 2018

Any idea on how the example.html should be structured ? I'm not able to figure it out.

@MarcosMoss

This comment has been minimized.

Copy link

commented Aug 27, 2018

what does your Models.py look like?

@adamtongji

This comment has been minimized.

Copy link

commented Feb 25, 2019

Thanks a lot!

@1oh1

This comment has been minimized.

Copy link

commented Apr 19, 2019

example.html

<html>
  <body>
    <form method="post">
      {{ form.csrf_token }}
      {{ form.example }}
      <input type="submit">
    </form>
  </body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.