Формы предоставляют API высшего уровня.Они содержат ваши определения полей, проверку делегатов, ввод данных, агрегирование ошибок и, в общем, функцию клея, скрепляющего все вместе.
Для получения ввода из формы и использования его в приложении вам необходимо отобразитьсоздайте экземпляр в шаблоне и вычислите значение в вашей части функции представления.
from wtforms import Form, StringField, validators, SubmitField, FloatField
class AddRecordForm(Form):
id = StringField('User', [validators.DataRequired()])
height = FloatField('Height in meters (e.g 1.75)', [validators.Length(min=4, max=4), validators.DataRequired()])
weight = FloatField('Weight in kilograms', [validators.Length(min=1), validators.DataRequired()])
submit = SubmitField("Update/Add your Health Information")
#Some thing like this must be your View function part
from flask import flash, redirect, url_for, session, render_template
app = Flask(__name__)
@app.route('/bmi', methods=['GET', 'POST'])
def bmi():
form = AddRecordForm()
if form.validate_on_submit():
height = form.height.data
weight = form.weight.data
bmi = weight/height*height
#Do database operations here
for field, errors in AddRecordForm().errors.items():
for error in errors:
flash(u"Error in the %s field - %s" % (getattr(form, field).label.text, 'error'))
return render_template('bmi.html', form=form)
Теперь в вашем шаблоне bmi.html
внутри templates
выведите форму в виде:
<form action="" method="post">
{{ form.hidden_tag() }}
<p>
{{ form.id.label }}<br>
{{ form.id }}
</p>
<p>
{{ form.height.label }}<br>
{{ form.height }}
</p>
<p>
{{ form.weight.label }}<br>
{{ form.weight}}
</p>
<p>{{ form.submit }}</p>
</form>