【问题标题】:WTForms-JSON not working with FormFieldsWTForms-JSON 不适用于 FormFields
【发布时间】:2015-04-15 00:06:11
【问题描述】:

当我使用 WTForms-JSON 时,嵌套表单 (FormFields) 不会填充数据。我无法发现我的错误,请参见下面的示例。

from flask import Flask, request, jsonify
from flask_wtf import Form
from wtforms import TextField, FormField, IntegerField
from wtforms.validators import InputRequired
import wtforms_json

app = Flask(__name__)
app.config["WTF_CSRF_ENABLED"] = False
wtforms_json.init()


class Address(Form):
    street = TextField('street', validators=[InputRequired()])
    number = IntegerField('number', validators=[InputRequired()])


class User(Form):
    name = TextField('name', validators=[InputRequired()])
    address = FormField(Address, label='address')


@app.route('/', methods=['POST'])
def why_no_work():
    form = User()

    form.from_json(request.json)
    print form.data

    if form.validate():
        return jsonify(success='YEAH')
    else:
        return jsonify(errors=form.errors)


if __name__ == '__main__':
    app.run(debug=True)

我发送以下 JSON 请求

{
    "name": "Alex",
    "address": {
        "street": "Plz Work Street",
        "number": 1337
    }
}

form.from_json(request.json) 之后的打印显示地址对象从未填充数据(此外,从路由返回“适当的”错误)。

打印输出: {'name': u'Alex', 'address': {'street': u'', 'number': None}}

我正在使用 WTForms 2.0.2、WTForms-JSON 0.2.8

这是一个错误还是我做错了什么?感谢您的帮助!

【问题讨论】:

    标签: python python-2.7 flask wtforms wtforms-json


    【解决方案1】:

    我错误地使用了 from_json() 函数,因为它是一个返回实例化表单的类函数。请参阅下面的路线更新代码。

    @app.route('/', methods=['POST'])
    def why_no_work():
        form = User.from_json(request.json)  # <-- This line right here
    
        if form.validate():
            return jsonify(success='YEAH')
        else:
            return jsonify(errors=form.errors)
    

    【讨论】:

      猜你喜欢
      • 2015-07-19
      • 1970-01-01
      • 2020-03-15
      • 1970-01-01
      • 1970-01-01
      • 2015-02-09
      • 2015-01-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多