2016-05-09 7 views
1

Ich habe ein Flask-WTF-Formular, das aus einem Wörterbuch, die ich als **kwargs übergeben muss ausgefüllt werden muss. Das Formular wird in einer Flask-Route verwendet, auf die mit der Methode POST zugegriffen wird. Das Formular wird nicht validiert und der Wert des Felds lautet None. Wie kann ich ein Datenwörterbuch an mein Formular übergeben und es dann validieren?Füllen WTForms Formular aus dem Wörterbuch bei Verwendung von 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 

Antwort

2

Flask-WTF automaticallyrequest.form passiert, wenn die Route zu gebucht wird, wenn keine Daten explizit übergeben wird. Sie müssen Ihre Daten als MultiDict übergeben, um das automatische Verhalten zu verhindern. Übergeben obj, data oder **kwargs, legt nur die Standardwerte fest, die only used sind, wenn keine realen Daten an das Formular übergeben werden.

form = MyForm(MultiDict(data)) 
-2

Sie haben Daten Parameter für den Konstruktor zu verwenden. Sie können auch überprüfen die documentation

form = MyForm(data=data) 
+0

Nein, Sie nicht, Auspacken '** kwargs' wie im op sind im wesentlichen äquivalent: https://github.com/wtforms/wtforms/blob/2.1/wtforms/form.py#L121- L124 – davidism

+0

Ich habe versucht, Daten = und hat nicht funktioniert. 'name' wurde nie festgelegt. – ruipacheco