WTForms-JSON не работает с полями форм



Вложенные формы (FormFields) не заполняются данными, когда я использую WTForms-JSON. Я не могу определить свою ошибку, см. пример ниже.



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



Это ошибка или я делаю что-то не так? Спасибо за любую помощь!

517   1  

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)

Comments

    Ничего не найдено.