Flask 是一个轻量级的 Web 框架,用于构建 Web 应用程序。WTForms 是一个 Flask 扩展,用于处理表单数据。复选框(Checkbox)是一种常见的表单元素,允许用户选择一个或多个选项。
复选框有两种类型:
复选框常用于以下场景:
假设我们有一个表单,用户可以选择多个兴趣爱好。我们希望在表单加载时预填充一些默认的兴趣爱好。
首先,确保你已经安装了 Flask 和 WTForms:
pip install Flask WTForms
创建一个表单类,定义复选框字段:
from flask_wtf import FlaskForm
from wtforms import BooleanField, SubmitField
class HobbyForm(FlaskForm):
hobby1 = BooleanField('Reading')
hobby2 = BooleanField('Sports')
hobby3 = BooleanField('Music')
submit = SubmitField('Submit')
在视图函数中,创建表单实例并预填充复选框:
from flask import Flask, render_template, redirect, url_for
app = Flask(__name__)
app.config['SECRET_KEY'] = 'your_secret_key'
@app.route('/', methods=['GET', 'POST'])
def index():
form = HobbyForm()
# 预填充复选框
form.hobby1.data = True
form.hobby3.data = True
if form.validate_on_submit():
# 处理表单提交
selected_hobbies = []
if form.hobby1.data:
selected_hobbies.append('Reading')
if form.hobby2.data:
selected_hobbies.append('Sports')
if form.hobby3.data:
selected_hobbies.append('Music')
return f'Selected hobbies: {", ".join(selected_hobbies)}'
return render_template('index.html', form=form)
if __name__ == '__main__':
app.run(debug=True)
创建一个 HTML 模板文件 index.html
,渲染表单:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Pre-filled Checkboxes</title>
</head>
<body>
<form method="POST">
{{ form.hidden_tag() }}
<p>{{ form.hobby1.label }} {{ form.hobby1() }}</p>
<p>{{ form.hobby2.label }} {{ form.hobby2() }}</p>
<p>{{ form.hobby3.label }} {{ form.hobby3() }}</p>
<p>{{ form.submit() }}</p>
</form>
</body>
</html>
原因:可能是没有正确设置 form.field.data
属性。
解决方法:确保在视图函数中正确设置了 form.field.data
属性,如上面的示例代码所示。
原因:可能是表单验证或处理逻辑有误。
解决方法:检查 form.validate_on_submit()
和处理提交的逻辑,确保正确获取和处理表单数据。
通过以上步骤,你可以使用 Flask 和 WTForms 预填充复选框,并处理表单提交。
领取专属 10元无门槛券
手把手带您无忧上云