[英]WTForms-JSON not working with FormFields
Nested forms (FormFields) doesn't get populated with data when I use WTForms-JSON. 当我使用WTForms-JSON时,嵌套表单(FormFields)不会填充数据。 I can't spot my mistake, see example below.
我无法发现我的错误,请参阅下面的示例。
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)
I send the following JSON-request 我发送以下JSON请求
{
"name": "Alex",
"address": {
"street": "Plz Work Street",
"number": 1337
}
}
but the print after form.from_json(request.json)
reveals that the address object is never populated with data (also, the "appropriate" errors are returned from the route). 但是
form.from_json(request.json)
之后的print显示地址对象永远不会填充数据(同样,路由返回“适当的”错误)。
Print output: {'name': u'Alex', 'address': {'street': u'', 'number': None}}
打印输出:
{'name': u'Alex', 'address': {'street': u'', 'number': None}}
I'm using WTForms 2.0.2, WTForms-JSON 0.2.8 我正在使用WTForms 2.0.2,WTForms-JSON 0.2.8
Is this a bug or am I doing something wrong? 这是一个错误还是我做错了什么? Thankful for any help!
感谢任何帮助!
I was using the from_json()-function wrong, as it is a class-function that returns an instantiated form. 我使用的是from_json() - 函数错误,因为它是一个返回实例化表单的类函数。 See updated code for route below.
请参阅以下路线的更新代码。
@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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.