在烧瓶中组合选择字段和整数字段



我正在构建一个flask应用程序,我正在从用户那里输入一个数字和一个菜单选择(每日,每周,每月,每年).

这是目前我的HTML页面的代码

{% for field in form %} 
<div class="form-group">
<label for="">{{field.label}}</label>
{{field}} /
<select name="frequency" id="">
<option value="day">Day</option>
<option value="week" selected>Week</option>
<option value="month">Month</option>
<option value="year">Year</option>
</select>
</div>
{%endfor%}

python代码,我需要选择选项菜单的值:

if form.validate_on_submit():
for field in form:
weight=getItemTotalGrams(getItemWeight(field.name), field.data, request.form.get('frequency'))

其中getItemTotalGrams接受3个整数,getItemWeight接受项目名称并返回其权重。Item是一个对象,它有两个属性:name和weight。

所以,我能够从字段中获取值,以便以后在python中使用它,但我不知道如何从选择选项菜单中获取值,所以我考虑将其包含在字段中,但找不到这样做的方法。

所以我的问题是:

  • 是否有一种方法,我可以在WTF-Forms中添加选择字段和整数字段,以连接一个字段中的2个输入?
  • 或如何获得选择选项菜单的值在python中使用它?

您可以在嵌套表单中组合多个字段。FormField为您提供了这样做的机会。此类型的几个组也可以与FieldList类型的字段连接创建。

当查询值时,返回一个字典或一个字典列表。

from flask_wtf import FlaskForm
from wtforms import FieldList, FormField, IntegerField, SelectField, SubmitField
class WeightForm(FlaskForm):
weight = IntegerField()
frequency = SelectField(
choices=[
('day', 'Day'),
('week', 'Week'),
('month', 'Month'),
('year', 'Year'),
],
default='week'
)
class Meta:
# No need for csrf token in this child form
csrf = False
class MyForm(FlaskForm):
weights = FieldList(FormField(WeightForm), min_entries=1)
submit = SubmitField()
@app.route('/example', methods=['GET', 'POST'])
def example():
form = MyForm(request.form)
if form.validate_on_submit():
print(form.weights.data)
return render_template('example.html', **locals())
<form method="post">
{{ form.hidden_tag() }}
{% for nested in form.weights -%}
<div class="form-group">
{{ nested.form.weight.label }}
{{ nested.form.weight }}
{{ nested.form.frequency }}
</div>
{% endfor -%}
{{ form.submit }}
</form>

最新更新