Created
January 19, 2016 14:04
-
-
Save doobeh/5d0f965502b86fee80fe to your computer and use it in GitHub Desktop.
More complete example of FieldList with FormField
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<form method="post" action=""> | |
{{ form.name}} | |
{{ form.hidden_tag() }} | |
<br/> | |
{% for entry in form.hours %} | |
{{ loop.index0|dow }} | |
{{ entry() }} | |
{% endfor %} | |
<input type="submit"/> | |
</form> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<ul> | |
{% for line in results %} | |
<li>{{ line }}</li> | |
{% endfor %} | |
</ul> |
pascale64
commented
Mar 7, 2020
via email
Hi, Here is a link to my code.
https://gist.github.com/pascale64/b774de18c3deba47edca62fe7a6a882b
warm regards
Paul
…On Fri, 2020-03-06 at 18:53 -0800, Anthony Plunkett wrote:
The filter was more to give some data formatting on the template...
it essentially just did a dict lookup {0: 'Monday', 1: 'Tuesday',
...} so the number provided by the index0 loop (0,1,2,3,4,5 ...)
resolved to a word.
Feel free to post up an example of what you're having problems with--
and drop the link in here. Hopefully the
https://gist.github.com/doobeh/aa0e07892922cfa32123a6926c7720a5
example can provide more examples (without the filter confusing things)
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or unsubscribe.
I don't think it uses good practices because Form does not contains any CSRF token.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment