WTFormsJSON不使用FormFields

2024-05-03 08:27:11 发布

您现在位置:Python中文网/ 问答频道 /正文

当我使用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请求

^{pr2}$

但是form.from_json(request.json)后面的打印表明address对象从来没有填充过数据(同样,从路由返回“适当的”错误)。在

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

我使用的是WTForms 2.0.2,WTForms JSON 0.2.8

这是虫子还是我做错了什么?感谢你的帮助!在


Tags: namefromimportformjsonappaddressrequest
1条回答
网友
1楼 · 发布于 2024-05-03 08:27:11

我错误地使用了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)

相关问题 更多 >