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

时间:2016-03-18 19:45:54

标签: python flask wtforms

我目前有一张表格

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打印字段的名称,但不打印文本。如何让它只打印包含文本的字段?

2 个答案:

答案 0 :(得分:3)

K想出来了,因为这是一本字典必须这样做

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

答案 1 :(得分: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)