4 Stimmen

Validierung von Auswahlfeldern in Flask WTF-Formularen

Ich verwende Flask-WTF-Formulare und ich habe den folgenden Code:

in forms.py

class DealForm( Form ):
    country  = SelectField( 'Country' )

in main.py

if not form.validate_on_submit():
    form = DealForm()
    form.country.choices = [('us','USA'),('gb','Great Britain'),('ru','Russia')]
    return render_template( 'index.html', user = current_user, form = form )
else:
    return render_template( 'index.html', form = form )

Es wird ein Fehler angezeigt, wenn ich vom POST zurückkehre, weil die country.choices keine ist. Was mache ich falsch?

11voto

ThiefMaster Punkte 297146

Sie müssen die Auswahlmöglichkeiten vor dem Aufruf von validate_on_submit() .

Da sie statisch sind, müssen Sie dies bei der Erstellung der Formularklasse tun:

class DealForm(Form):
    country = SelectField('Country', choices=[
        ('us','USA'),('gb','Great Britain'),('ru','Russia')])

Wenn Sie sie nach dem Erstellen der Formularinstanz festlegen möchten, z. B. weil die verfügbaren Auswahlmöglichkeiten nicht fest kodiert sind oder von anderen Faktoren abhängen, würden Sie dies nach dem Erstellen der Klasseninstanz wie folgt tun:

form.country.choices = [('us','USA'),('gb','Great Britain'),('ru','Russia')]

Das heißt, so wie Sie es bereits getan haben, nur früher.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X