2016-05-09 6 views
1

У меня есть форма Flask-WTF, которая должна быть заполнена из словаря, который я передаю как **kwargs. Форма используется в маршруте Flask, к которому осуществляется доступ, используя метод POST. Форма не проверяется, и значение поля равно None. Как передать словарь данных в мою форму, а затем проверить его?Заполнение формы WTForms из словаря при использовании Flask-WTF

@app.route('/submit', methods=['POST']) 
def submit(): 
    data = {'name': 'eee'} 
    form = MyForm(**data) 
    print(form.validate()) # False, name is required 
    print(form.name.data) # None 

ответ

2

Колба-WTF automatically проходит request.form когда маршрут размещен на, если данные не передаются в явном виде. Вам необходимо передать свои данные, как MultiDict, чтобы предотвратить автоматическое поведение. Передача obj, data, или **kwargs, устанавливает значения по умолчанию only used, если реальные данные не передаются в форму.

form = MyForm(MultiDict(data)) 
-2

Вы должны использовать данных параметр для конструктора. Вы также можете проверить documentation

form = MyForm(data=data) 
+0

Нет, вы этого не сделаете, распаковка '** kwargs' как в ор по существу эквивалентны: https://github.com/wtforms/wtforms/blob/2.1/wtforms/form.py#L121- L124 – davidism

+0

Я пробовал данные = и не работал. «имя» никогда не было установлено. – ruipacheco