Flask-WTFormsを使用してフォームを作成しています。WTForms BooleanFieldがチェックされていることを確認します。
私はBooleanFieldを使用しているため、ユーザーはそれらの用語に同意することを示すことができます。
投稿時にBooleanFieldを検証して、確認済みであることを確認できません。私は、Required()、DataRequired()とカスタム検証を使用しようとしましたが、いずれの場合も検証エラーを受け取っていません。ここで
は、アプリケーションのナットとボルト以下のとおりです。
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)
そしてここでは、index.htmlのテンプレートです...
{% 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 %}
任意の提案をありがたく受け取ったことになります。あなたがDataRequired()
を使用する必要がありますME-ため
おそらく、この例を下に削り取っし、それを少し拡張することができ - 簡単なフォームを返す単純なサーバーと、検証を出力するハンドラーです。それはそれを[mcve]にします –
'Required'は' DataRequired'の廃止されたエイリアスです。 – davidism
これらのコメントのおかげでみんな。残念ながら、DataRequired()は単純なケースで動作しましたが、Bootstrapでレンダリングしたい場合は動作しません。 – autoanalytix