迭代表单并仅使用表单中的数据打印值

问题描述 投票:1回答:2

我目前有一份表格

class StateForm(Form):
    court_info = TextField('Court Info', [validators.Optional()])
    court_rules = TextField('Court Rules', [validators.Optional()])
    jurisdictional_limit = TextField('Jurisdictional Limit', [validators.Optional()])
    complaint_form = TextField('Complaint Form', [validators.Optional()])
    governing_law = TextField('Governing Law', [validators.Optional()])
    more_info = TextField('More Info', [validators.Optional()])

当我收到请求时,我只希望它打印实际有信息输入的字段。

@app.route("/update/<state>", methods=['POST'])
@login_required
def update_states(state):
    form = StateForm(request.form)
    for i in form.data:
        print(i)

我不想输入if语句的原因是我们在路上添加更多字段到表单。

现在i打印字段的名称,但不打印文本。如何让它只打印包含文本的字段?

python flask wtforms
2个回答
3
投票

K弄清楚了,因为字典必须这样做

for k, v in form.data.items():
    print(k, v)

0
投票

从Werkzeug开始,0.14 http://werkzeug.pocoo.org/docs/0.14/datastructures/#werkzeug.datastructures.MultiDict和Flask版本1.0.2 request.form是一个ImmutableMultiDict,派生自MultiDict,用于处理具有多个值的单个键(例如,用于表单提交)。它的行为类似于字典,因此这将打印提交表单中每个键的第一个值,但需遵循关于打印能力的常规警告:

for k, v in request.form.items():
  print(k, v)
© www.soinside.com 2019 - 2024. All rights reserved.