WTForms 是一个用于处理 Web 表单的 Python 库,它提供了一种简洁的方式来定义和处理 HTML 表单。布尔域(BooleanField)通常用于表示一个简单的开关或选择,例如是否同意某项条款。
布尔域(BooleanField):
BooleanField
用于创建一个单选按钮或复选框,通常用于表示真/假、是/否的选择。BooleanField
可能会返回 None
或默认值。BooleanField
可能会返回 None
,但在某些情况下可能会被解释为 True
。确保在定义 BooleanField
时设置了明确的默认值:
from wtforms import Form, BooleanField
class MyForm(Form):
agree = BooleanField('Agree', default=False)
在处理表单提交时,检查并确保数据正确解析:
@app.route('/submit', methods=['POST'])
def submit():
form = MyForm(request.form)
if form.validate():
agree_value = form.agree.data
print(f"Agree value: {agree_value}")
# 进一步处理逻辑
else:
print("Form validation failed")
确保 HTML 表单元素正确渲染,例如:
<form method="POST" action="/submit">
{{ form.hidden_tag() }}
<p>{{ form.agree.label }} {{ form.agree() }}</p>
<input type="submit" value="Submit">
</form>
以下是一个完整的示例,展示了如何正确使用 BooleanField
并处理表单提交:
from flask import Flask, render_template, request
from wtforms import Form, BooleanField, validators
app = Flask(__name__)
class MyForm(Form):
agree = BooleanField('Agree', [validators.DataRequired()])
@app.route('/', methods=['GET', 'POST'])
def index():
form = MyForm(request.form)
if request.method == 'POST' and form.validate():
agree_value = form.agree.data
print(f"Agree value: {agree_value}")
return "Form submitted successfully!"
return render_template('form.html', form=form)
if __name__ == '__main__':
app.run(debug=True)
form.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>WTForms Example</title>
</head>
<body>
<form method="POST">
{{ form.hidden_tag() }}
<p>{{ form.agree.label }} {{ form.agree() }}</p>
<input type="submit" value="Submit">
</form>
</body>
</html>
通过以上步骤,可以有效避免 BooleanField
始终返回 True
的问题,并确保表单数据的正确处理。
领取专属 10元无门槛券
手把手带您无忧上云