Skip to content

Instantly share code, notes, and snippets.

@muroshi
Forked from doobeh/home.html
Created January 20, 2016 11:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save muroshi/07c95c8a056de7c5f391 to your computer and use it in GitHub Desktop.
Save muroshi/07c95c8a056de7c5f391 to your computer and use it in GitHub Desktop.
More complete example of FieldList with FormField
<form method="post" action="">
{{ form.name}}
{{ form.hidden_tag() }}
<br/>
{% for entry in form.hours %}
{{ loop.index0|dow }}
{{ entry() }}
{% endfor %}
<input type="submit"/>
</form>
from flask import Flask, render_template
from flask_wtf import Form
from wtforms import StringField, FormField, FieldList, HiddenField
import calendar
app = Flask(__name__)
app.secret_key = 'SCRATCH'
def dow_name(dow):
return calendar.day_name[dow]
app.jinja_env.filters['dow'] = dow_name
class TimeForm(Form):
opening = StringField('Opening Hour')
closing = StringField('Closing Hour')
day = HiddenField('Day')
class BusinessForm(Form):
name = StringField('Business Name')
hours = FieldList(FormField(TimeForm), min_entries=7, max_entries=7)
@app.route('/', methods=['post','get'])
def home():
form = BusinessForm()
if form.validate_on_submit():
results = []
for idx, data in enumerate(form.hours.data):
results.append('{day}: [{open}]:[{close}]'.format(
day=calendar.day_name[idx],
open=data["opening"],
close=data["closing"],
)
)
return render_template('results.html', results=results)
print(form.errors)
return render_template('home.html', form=form)
if __name__ == '__main__':
app.run(debug=True)
<ul>
{% for line in results %}
<li>{{ line }}</li>
{% endfor %}
</ul>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment