2013-01-13 5 views
5

Sto utilizzando Flask con Flask-WTForms e sto scrivendo una pagina di amministrazione in cui è possibile aggiornare i valori per un utente, inclusa la password.Qual è il modo giusto per richiedere facoltativamente un campo usando Flask-WTForms?

Sto utilizzando la stessa pagina di modulo che utilizzo per la registrazione, ma poiché non è necessario che la password venga aggiornata, non voglio richiederla. Qual è il modo giusto per farlo con Flask-WTForms?

ho ottenuto il mio UserForm in forms.py e stavo pensando di fare un validatore personalizzato e hanno un livello di file opzione require_password che ignorare il controllo di default. Sono abbastanza nuovo per WTForms, e un po 'nuovo per Flask.

risposta

4

Questa soluzione sembra fare quello che voglio:

In forms.py,

from flask.ext.wtf import Optional 

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

#Rest of code here... 

Poi dentro il mio pallone endpoint posso chiamare:

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

che sembra fare quello che volevo - mantenere tutte le altre convalide (es. conferma), ignorando qualsiasi cosa, se non c'è password presente.

+0

Sto ricevendo "ImportError: nessun modulo denominato flask.ext.wtf.Optional" –

+1

@vivi Si potrebbe provare "da wtforms.validators import Optional" per vedere se avrebbe funzionato per voi. – iChux