Login
网站首页 > 文章中心 > 其它

Flask wtforms实现表单验证使用

作者:小编 更新时间:2023-10-05 11:00:23 浏览量:420人看过

下面是详细的"Flask wtforms实现表单验证使用"的攻略:

Flask wtforms实现表单验证使用-图1

第一段:前置知识

在使用 Flask wtforms 实现表单验证前,需要了解以下知识:

Flask:Python Web 应用框架,提供了一个模块化的方式组织 Web 应用程序.

Flask wtforms:基于 Flask 的表单验证扩展,可以方便地进行表单验证.

HTML 表单:Web 表单,包含需要提交的数据(例如文本框、下拉框、单选框等)和提交表单的方式(GET 或 POST).

第二段:安装 Flask wtforms

使用 pip 安装 Flask wtforms:

pip install flask-wtf

第三段:实现表单验证

Flask wtforms实现表单验证使用-图2

下面是实现 Flask 表单验证的详细步骤:

1. 创建 Flask 应用程序和表单验证代码

from flask import Flask, render_template, request
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.validators import DataRequired

app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret'

class ExampleForm(FlaskForm):
submit = SubmitField('Submit')


Flask wtforms实现表单验证使用-图3

FlaskForm 是 wtforms 扩展提供的基类,用于创建表单.在 ExampleForm 类中,定义了表单的 name 和 email 字段,以及一个提交按钮(submit).

其中,DataRequired 是 wtforms 提供的验证器,用于判断表单字段是否为空.

2. 创建视图函数

@app.route('/', methods=['GET', 'POST'])
def index():
return render_template('index.html', form=form)

index 视图函数用于处理 GET 和 POST 请求.在函数中,创建了 ExampleForm 实例(form),并且通过 if form.validate_on_submit() 判断当前请求是否是 POST 请求并且表单验证成功.

如果表单验证成功,将获取到表单字段的值并且返回一个页面,给用户一个反馈.

③ 创建模板文件




  
  Example Form


  
{{ form.name.label }}
{{ form.name }}
{{ form.email.label }}
{{ form.email }}
{{ form.submit }}

使用 HTML form 标签包含表单元素和提交按钮,并且在表单元素的前面显示标签文本.

④ 启动应用程序

if __name__ == '__main__':
app.run()

第四段:示例一

1. 表单验证

在表单字段上定义验证器,用于验证表单是否合法,例如:

class LoginForm(FlaskForm):
submit = SubmitField('Sign In')

2. 实现表单提交

在视图函数中实现表单提交的逻辑:

@app.route('/login', methods=['GET', 'POST'])
def login():
return render_template('login.html', title='Sign In', form=form)

如果表单验证通过,即可在服务器端执行登录逻辑,并重定向到某个页面.

③ 创建模板文件

创建 login.html 模板文件用于显示表单:

{% extends "base.html" %}

{% block content %}
  

{{ title }}

{{ form.username.label }}

{{ form.password.label }}

{{ form.remember_me() }} {{ form.remember_me.label }}

{{ form.submit() }}

{% endblock %}

在模板文件中,使用 Flask wtforms 提供的 form.[fieldname] 属性获取表单字段,并且使用 HTML 标签显示表单.同时在 form.action 属性中设置表单提交的 URL.

第五段:示例二:使用 FieldList 显示重复的表单字段

有时候需要在表单中显示重复的表单字段,例如:

class AddressForm(FlaskForm):
zip_code = StringField('Zip Code', validators=[DataRequired(), Length(min=5, max=10)])

可以使用 FieldList 来实现表单字段的重复,例如:

class ProfileForm(FlaskForm):
submit = SubmitField('Save')

在 ProfileForm 中,使用 FormField 和 FieldList 来实现重复输入地址的功能.min_entries 可以定义用户至少需要输入的地址数量.

在视图函数中,在处理 POST 数据之前,可先根据表单提交的地址数量检测地址数量是否符合要求,例如:

@app.route('/profile', methods=['GET', 'POST'])
def profile():
    if len(form.addresses) < 2:
return render_template('profile.html', title='Profile', form=form)

在模板文件中,可以使用以下代码来渲染一个 ProfileForm 表单示例:

{% extends "base.html" %}

{% block content %}
  

{{ title }}

{{ form.name.label }}

Addresses

{{ form.submit() }}

{% endblock %}

以上就是土嘎嘎小编为大家整理的Flask wtforms实现表单验证使用相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章