Ich erstelle ein Formular mit Flask-WTForms.Überprüfen Sie, dass ein WTForms BooleanField aktiviert ist
Ich verwende ein BooleanField, damit ein Benutzer angeben kann, dass sie Bedingungen zustimmen.
Ich kann das BooleanField bei der Übergabe nicht überprüfen, um sicherzustellen, dass es überprüft wurde. Ich habe versucht, Required(), DataRequired() und benutzerdefinierte Validierung, aber in jedem Fall habe ich keinen Validierungsfehler erhalten.
Hier sind die Schrauben und Muttern der Anwendung:
from flask import Flask, render_template, session, redirect, url_for, flash
from flask_wtf import Form
from wtforms import BooleanField, SubmitField
from wtforms.validators import Required, DataRequired
from flask_bootstrap import Bootstrap
app = Flask(__name__)
app.config['SECRET_KEY'] = 'impossibletoknow'
bootstrap = Bootstrap(app)
class AgreeForm(Form):
agreement = BooleanField('I agree.', validators=[DataRequired()])
submit = SubmitField('Submit')
@app.route('/', methods=['GET', 'POST'])
def index():
form = AgreeForm()
if form.validate_on_submit():
agreement = form.agreement.data
if agreement is True:
flash('You agreed!')
return redirect(url_for('index', form=form))
form.agreement.data = None
agreement = False
return render_template('index.html', form=form)
if __name__ == '__main__':
app.run(debug=True)
Und hier ist die index.html Vorlage ...
{% import "bootstrap/wtf.html" as wtf %}
{% block content %}
<div class="container">
{% for message in get_flashed_messages() %}
<div class="alert alert-warning">
<button type="button" class="close" data-dismiss="alert">×</button>
{{ message }}
</div>
{% endfor %}
{{ wtf.quick_form(form) }}
</div>
{% endblock %}
Anregungen dankbar empfangen würden.
Sie wahrscheinlich dieses Beispiel abspecken konnte und es ein wenig verlängern - ein einfacher Server, der nur ein einfaches Formular und einen Handler zurückgibt, der die Validierung ausgibt. Das würde es zu einem [mcve] –
machen Beachten Sie, dass 'Required' ein veralteter Alias von' DataRequired' ist, verwenden Sie einfach den späteren. – davidism
Danke Leute für diese Kommentare. Obwohl das DataRequired() im einfachen Fall funktioniert, scheint es leider nicht zu funktionieren, wenn es mit Bootstrap gerendert werden soll. – autoanalytix