下面是 Python 中 Flask Web 表单的使用方法介绍:
Flask Web 表单
Flask Web 表单(Flask Web Forms)是 Flask 框架的一个扩展,它提供了简单易用的 API 来处理 Web 表单。使用 Flask Web 表单,可以轻松地编写处理用户表单的代码并实现表单验证。
安装 Flask Web 表单
安装 Flask Web 表单很简单,只需要使用 pip 命令:
pip install Flask-WTF
创建一个基本的 Web 表单
首先,在 Flask 应用程序中导入 FlaskWebForms:
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.validators import DataRequired
然后,创建一个继承自 FlaskForm 的表单类。在这个表单类中,我们需要使用 WTForms 提供的字段类型定义表单字段。例如,StringField 表示字符串类型,SubmitField 表示提交按钮类型。还可以为表单字段添加验证器(validators),例如 DataRequired 验证器用于确保用户必须填写该字段。
示例:
class NameForm(FlaskForm):
name = StringField('What is your name?', validators=[DataRequired()])
submit = SubmitField('Submit')
接下来,在 Flask 路由函数中创建该表单类的实例,并渲染该表单。此时可以使用 render_template() 函数渲染 HTML 模板。在 HTML 模板中,可以使用 Jinja2 模板引擎内置的表单宏(form macro)简化表单的渲染。
示例:
@app.route('/', methods=['GET', 'POST'])
def index():
name_form = NameForm()
if name_form.validate_on_submit():
name = name_form.name.data
return render_template('hello.html', name=name)
return render_template('index.html', form=name_form)
HTML 模板示例:
{% extends "base.html" %}
{% block content %}
<h1>My App</h1>
<form method="POST" action="{{ url_for('index') }}">
{{ form.csrf_token }}
{{ form.name.label }} {{ form.name() }}
{{ form.submit() }}
</form>
{% endblock %}
注意,在表单中需要添加 csrf_token 字段进行 CSRF 防护。
表单验证
通过 Flask Web 表单,可以轻松地实现各种表单验证。WTForms 提供了许多常用的验证器,例如 DataRequired(不能为空)、Length(长度范围)、Email(电子邮件格式)、EqualTo(相等)等等。可以在定义表单字段时使用这些验证器。
示例:
class LoginForm(FlaskForm):
username = StringField('Username', validators=[DataRequired(), Length(1, 20)])
password = PasswordField('Password', validators=[DataRequired()])
remember = BooleanField('Remember me')
submit = SubmitField('Log in')
在路由函数中,要验证是否提交了表单并且该表单是否合法。你可以使用 validate_on_submit() 方法来判断表单是否被提交,并且 Flask Web 表单会自动检查所有的验证器,如果有任何一个验证失败则表单将不会被接受。
示例:
@app.route('/login', methods=['GET', 'POST'])
def login():
form = LoginForm()
if form.validate_on_submit():
# 用户登录操作...
flash('Login requested for user {}, remember_me={}'.format(
form.username.data, form.remember.data))
return redirect(url_for('index'))
return render_template('login.html', title='Sign In', form=form)
HTML 模板示例:
{% extends "base.html" %}
{% block content %}
<h1>Sign In</h1>
<form action="{{ url_for('login') }}" method="POST" role="form">
{{ form.hidden_tag() }}
<div class="form-group{% if form.username.errors %} has-error{% endif %}">
{{ form.username.label }} {{ form.username(class="form-control") }}
{% for error in form.username.errors %}
<span class="help-block">{{ error }}</span>
{% endfor %}
</div>
<div class="form-group{% if form.password.errors %} has-error{% endif %}">
{{ form.password.label }} {{ form.password(class="form-control") }}
{% for error in form.password.errors %}
<span class="help-block">{{ error }}</span>
{% endfor %}
</div>
<div class="checkbox">
<label>
{{ form.remember(class="") }} Remember me
</label>
</div>
{{ form.submit(class="btn btn-primary") }}
</form>
{% endblock %}
总结
这就是 Flask Web 表单的使用方法。使用 Flask Web 表单以及 WTForms,可以轻松创建并验证 Web 表单,并且可以避免由于用户输入错误而导致的程序崩溃。如果你已经熟悉 Flask,那么使用 Flask Web 表单将会非常轻松简单。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python中Flask Web 表单的使用方法介绍 - Python技术站