2013-01-13 10 views
5

Ich benutze Flask mit Flask-WTForms und schreibe eine Admin-Seite, wo es möglich ist, Werte für einen Benutzer zu aktualisieren - einschließlich des Passworts.Was ist der richtige Weg, um optional ein Feld mit Flask-WTForms zu benötigen?

Ich benutze die gleiche Formularseite, die ich für die Registrierung verwende, aber da es nicht erforderlich ist, dass das Passwort aktualisiert wird, möchte ich es nicht verlangen. Was ist der richtige Weg, dies mit Flask-WTForms zu tun?

Ich habe meine UserForm in forms.py und ich dachte daran, einen benutzerdefinierten Validator und eine Dateiebene require_password Option, die die Standardüberprüfung überschreiben würde. Ich bin ziemlich neu bei WTForms und etwas neu für Flask.

Antwort

4

scheint diese Lösung zu tun, was ich will:

In forms.py,

from flask.ext.wtf import Optional 

def make_optional(field): 
    field.validators.insert(0, Optional()) 

#Rest of code here... 

Dann in meinem Kolben Endpunkt ich anrufen kann:

user_form = UserForm() 
forms.make_optional(user_form.password) 
if user_form.validate_on_submit(): 
    #Go on your merry way! 

, das zu tun scheint was ich wollte - behalten Sie alle anderen Bestätigungen (zB Bestätigung), während Sie alles ignorieren, wenn es keine gibt Passwort vorhanden.

+0

Ich erhalte "ImportError: Kein Modul namens flask.ext.wtf.Optional" –

+1

@Vivi Sie könnten versuchen "von wtforms.validators Import Optional", um zu sehen, ob es für Sie arbeiten würde. – iChux