首页 > 其他分享 >wtforms模块的使用

wtforms模块的使用

时间:2024-03-06 16:13:09浏览次数:23  
标签:__ name form 使用 wtforms 模块 validators import

介绍

# 类似django中的forms组件
# 分离项目几乎不用,了解使用即可

# 作用
1 做数据校验
2 渲染模板
3 渲染错误信息

使用方式

py文件中

from flask import Flask, render_template, request, redirect
from wtforms import Form
from wtforms.fields import simple
from wtforms import validators
from wtforms import widgets

app = Flask(__name__, template_folder='templates')

app.debug = True


class LoginForm(Form):
    # 字段(内部包含正则表达式)
    name = simple.StringField(
        label='用户名',
        validators=[
            validators.DataRequired(message='用户名不能为空.'),
            validators.Length(min=6, max=18, message='用户名长度必须大于%(min)d且小于%(max)d')
        ],
        widget=widgets.TextInput(), # 页面上显示的插件
        render_kw={'class': 'form-control'}

    )
    # 字段(内部包含正则表达式)
    pwd = simple.PasswordField(
        label='密码',
        validators=[
            validators.DataRequired(message='密码不能为空.'),
            validators.Length(min=8, message='用户名长度必须大于%(min)d'),
            validators.Regexp(regex="^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&])[A-Za-z\d$@$!%*?&]{8,}",
                              message='密码至少8个字符,至少1个大写字母,1个小写字母,1个数字和1个特殊字符')

        ],
        widget=widgets.PasswordInput(),
        render_kw={'class': 'form-control'}
    )



@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'GET':
        form = LoginForm()
        return render_template('login.html', form=form)
    else:
        form = LoginForm(formdata=request.form)
        if form.validate():
            print('用户提交数据通过格式验证,提交的值为:', form.data)
        else:
            print(form.errors)
        return render_template('login.html', form=form)

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

HTML中

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>登录</h1>
<form method="post">
    <p>{{form.name.label}} {{form.name}} {{form.name.errors[0] }}</p>
    <p>{{form.pwd.label}} {{form.pwd}} {{form.pwd.errors[0] }}</p>
    <input type="submit" value="提交">
</form>
</body>
</html>

标签:__,name,form,使用,wtforms,模块,validators,import
From: https://www.cnblogs.com/wellplayed/p/18056828

相关文章

  • 代码随想录算法训练营第三十八天| ● 理论基础 ● 509. 斐波那契数 ● 70. 爬楼梯
    理论基础 代码随想录(programmercarl.com)动态规划的五部曲:确定dp数组(dptable)以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组斐波那契数 题目链接:509.斐波那契数-力扣(LeetCode)思路:还好。classSolution{public:intfib(intn)......
  • Pycharm的安装以及如何跳过试用设置永久使用?(Windows专业版2023-2024)
    目录一.Pycharm安装包下载二.Pycharm安装包安装三.设置永久使用一.Pycharm安装包下载官网下载(较慢),直接点击Download即可。也可以直接使用baidu网盘下载Pycharm官网地址Pycharm安装包网盘下载(内含安装视频及pojie包)二.Pycharm安装包安装直接双击第一步下载的安装......
  • RUST日常使用.md
    RUST日常使用Log日志依赖:[dependencies]log="0.4.20"env_logger="0.10.0"一般使用://使用RUST_LOG默认或环境变量env_logger::Builder::from_env(Env::default().default_filter_or("warn")).init();log::warn!("Thisisanexamplemessage.&......
  • 技术干货 | 英码嵌入式IVP92x开发主板上电启动及各模块测试详细教程(附工具)
    IVP92x是一款基于英码嵌入式低照度全彩视频处理模组SOM928设计的开发主板,IVP92x主板具备多路智能视觉分析(目标识别/运动跟踪/周界防范等)能力,支持[email protected]/H.264多码流编解码,同时支持智能降噪、全景拼接以及双目深度处理;除此之外,还设计了丰富的外围接口,满足无人机、智能摄......
  • 蓝牙体脂秤方案测脂肪模块PCB设计
    蓝牙体脂秤采用的就是BIA生物电阻抗技术,用户仅需1次测量,就能知道身体的脂肪率,水分率,基础代谢率,肌肉量,骨量,蛋白质,BMI,体重,身体的得分,年龄等十一项身体的数据,更加全面的了解自己的身体情况,这样就能够及时的做出针对性的调节和改善。如果脂肪过高,蓝牙体脂秤会提醒用户多运动,多锻炼......
  • Android.mk 使用 dagger2
    #Managesuseofannotationprocessors.##Atthemomentboththe-processorpathandthe-processor#flagsmustbespecifiedinordertouseannotationprocessors#asacodeindexingtoolthatwrapsjavacdoesn'tasyetsupport#thesamebehaviouras......
  • BurpSuite使用教程
    BurpSuite使用教程BurpSuite是基于java环境运行,所以要安装java环境启动BurpSuite方式第一种:双击BurpSuite.jar,点击run进行进入第二种:命令启动或者创建一个.bat文件(批处理文件),写入命令,双击启动(该命令与第一种run旁边的命令一致)java-noverify-javaagent:burploader.jar-jar......
  • 使用python编程实现多个csv文件数据的合并和输出
    具体代码importpandasaspdimportosdf01=pd.read_csv("D:\\12140\\Desktops\\111\\t11.csv",encoding='utf-8',dtype='str')df02=pd.read_csv("D:\\12140\\Desktops\\111\\t12.csv",encoding='utf-......
  • BeanShell 断言如何使用?
    一引入: 二BeanShell断言参数:作用类似于JMeter断言,ctx、vars、props、prev、log、SampleResult都和BeanShellSampler一样BeanShellAssertion特定的参数有:*Failure*FailureMessage*Response*RequestHeaders*SampleLabel*SamplerData**Failure:设置......
  • Nuxt3-tailwindcss使用
    Nuxt3使用 tailwindcss文档:https://www.tailwindcss.cn/docs/installation安装文档:https://tailwindcss.nuxtjs.org/getting-started/installation1、安装 @nuxtjs/tailwindcssyarnadd-D@nuxtjs/tailwindcss2、nuxt.config.ts中配置exportdefaultdefineNuxtConfig......