Flask框架 之Flask-WTF表单扩展


pip install flask-wtf

 

一、WTForms支持的HTML标准字段

字段对象说明
StringField 文本字段
TextAreaField 多行文本字段
PasswordField 密码文本字段
HiddenField 隐藏文本字段
DateField 文本字段,值为datetime.date格式
DateTimeField 文本字段,值为datetime.datetime格式
IntegerField 文本字段,值为整数
DecimalField 文本字段,值为decimal.Decimal
FloatField 文本字段,值为浮点数
BooleanField 复选框,值为True和False
RadioField 一组单选框
SelectField 下拉列表
SelectMultipleField 下拉列表,可选择多个值
FileField 文本上传字段
SubmitField 表单提交按钮
FormField 把表单作为字段嵌入另一个表单
FieldList 一组指定类型的字段

 

二、WTForms常用验证函数

验证函数说明
DataRequired 确保字段中有数据
EqualTo 比较两个字段的值,常用于比较两次密码输入
Length 验证输入的字符串长度
NumberRange 验证输入的值在数字范围内
URL 验证URL
AnyOf 验证输入值在可选列表中
NoneOf 验证输入值不在可选列表中

 

三、示例

复制代码
from flask import Flask, redirect, request, url_for, render_template, session
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, SubmitField
from wtforms.validators import DataRequired, EqualTo

# 创建flask应用对象
# __name__ 代表当前模块名称
# flask以当前目录为总目录,static目录为静态目录,templates为模版目录
app = Flask(__name__)

app.config["SECRET_KEY"] = "yang"

# 定义表单模型类
class RegisterForm(FlaskForm):
    # DataRequired 设置数据必填
    username = StringField(label=u"用户名:", validators=[DataRequired(u"请输入用户名")])
    password = PasswordField(label=u"密码", validators=[DataRequired("请输入密码")])
    password2 = PasswordField(label="确认密码", validators=[DataRequired("请输入秘密"), EqualTo("password", "两次密码不一致")])
    submit = SubmitField(label=u"注册")

@app.route("/")
def index():
    user_info = session.get("user_info")
    return str(user_info)

@app.route("/register", methods=["POST", "GET"])
def register():
    # 如果是post,会把前端返回的数据放到form中
    form = RegisterForm()
    # 验证表单数据是否合格
    if form.validate_on_submit():
        # 验证合格, 提取数据
        username = form.username.data
        password = form.password.data
        print("username: %s, password=%s" % (username, password))
        session["user_info"] = {"username": username, "password": password}
        return redirect(url_for("index"))

    return render_template("register.html", form = form)


if __name__ == '__main__':
    # 启动应用程序
    app.run(port=8083,debug=True)
复制代码
复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="" method="post">
    {{form.csrf_token}}
    {{form.username.label}}
    <p>{{form.username}}</p>
    {% for msg in form.username.errors %}
        <p>{{msg}}</p>
    {% endfor %}

    {{form.password.label}}
    <p>{{form.password}}</p>
    {% for msg in form.password.errors %}
        <p>{{msg}}</p>
    {% endfor %}

    {{form.password2.label}}
    <p>{{form.password2}}</p>
    {% for msg in form.password2.errors %}
        <p>{{msg}}</p>
    {% endfor %}

    {{form.submit}}

</form>
</body>
</html>
复制代码

 

如果你感觉有收获,欢迎给我打赏 ———— 以激励我输出更多优质内容,联系QQ:2575404985
        
posted @   样子2018  阅读(123)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
历史上的今天:
2022-03-30 Vue 之vue-resource拦截器使用
2022-03-30 Vue 之使用Base64
点击右上角即可分享
微信分享提示

目录导航

一、WTForms支持的HTML标准字段
二、WTForms常用验证函数
三、示例