Flask基础(16)-->WTForms表单创建和简单验证

前言:使用Flask_WTF需要配置参数SECRET_KEY
CSRF_ENABLED是为了CSRF(跨站请求伪造)保护。SECRET_KEY用来生成加密令牌,
当CSRF激活的时候,该设置会根据设置的秘钥生成加密令牌。

下一篇我再为大家详细叙述一下CSRF相关内容。

下面是为大家准备的一个示例案例:

  1. WTForms_test.py(视图页)

    from flask import Flask,render_template,request,flash
    # 导入wtf扩展的表单类
    from flask_wtf import FlaskForm
    # 导入自定义表单需要的字段
    from wtforms import SubmitField,StringField,PasswordField
    # 导入wtf扩展提供的表单验证器
    from wtforms.validators import DataRequired,EqualTo app = Flask(__name__)
    app.config["WTF_CSRF_ENABLED"] = False
    app.secret_key = "adfasfssdfdsf" # 自定义表单类,文本字段,密码字段,提交按钮
    class RegisterForm(FlaskForm):
    username = StringField("用户名:", validators=[DataRequired("请输入用户名")], render_kw={"placeholder": "请输入用户名"})
    password = PasswordField("密码:", validators=[DataRequired("请输入密码")],render_kw={"placeholder": "请输入密码"})
    password2 = PasswordField("确认密码:", validators=[DataRequired("请输入确认密码"), EqualTo("password", "两次密码不一致")],render_kw={"placeholder": "请确认密码"})
    submit = SubmitField("注册") # 定义根路由视图函数,生成表单对象,获取表单数据,进行表单数据验证
    @app.route('/demo1',methods=["get","post"]) # 获取表单的方式get和post都可以
    def demo1():
    register_form = RegisterForm() # 获取表单对象
    # 进行表单验证
    if register_form.validate_on_submit(): # 当submit表单提交时触发验证,那么表单提交成功,即:所有验证都通过触发判断
    # username = request.form.get("username")
    # password = request.form.get("password")
    # password2 = request.form.get("password2")
    # 表单提交验证通过,在此处可以获取表单数据,保存到数据库,从而完成注册
    return "register success" # 返回给客户端注册成功的提示
    else:
    if request.method == "POST": # 表单提交并且表单验证失败
    flash("用户名或者密码错误") # 返回给客户端失败提示
    return render_template("WTForms_test.html",form = register_form) # 将自定义表单数据提交给模板页 if __name__ == '__main__':
    app.run(debug = True)
  2. WTForms_test.html(模板页)
    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>WTForms_test</title>
    </head>
    <body>
    <form method="post">
    {{ form.username.label }} {{ form.username }}<br/> # 由视图函数获取注册表单对象register_form,然后通过render_template传递到模板,由form接收
    {{ form.password.label }} {{ form.password }}<br/>
    {{ form.password2.label }} {{ form.password2 }}<br/>
    {{ form.submit }}
    </form>
    {% for message in get_flashed_messages() %} # 视图函数中flash闪现过来的是一个消息队列,可以通过遍历get_flashed_messsages()获取
    {{ message }} # 显示flash闪现过来的消息
    {% endfor %} </body>
    </html>

      

Flask基础(16)-->WTForms表单创建和简单验证的更多相关文章

  1. flask框架(八)—自定义命令flask-script、多app应用、wtforms表单验证、SQLAIchemy

    自定义命令flask-script 用于实现类似于django中 python3 manage.py runserver ...类似的命令,用命令行启动项目 首先安装:pip3 install fla ...

  2. 测开之路一百四十八:WTForms表单验证

    使用WTForms表单验证,可以在数据建模时就设置验证信息和错误提示 创建模型时,设置验证内容,如必填.格式.长度 from flask_wtf import Formfrom wtforms imp ...

  3. flask 使用Flask-WTF处理表单

    使用Flask-WTF处理表单 扩展Flask-WTF继承了WTFforms,使用它可以在flask中更方便的使用WTForms.Flask-WTF将表单数据解析.CSRF保护.文件上传等功能与Fla ...

  4. bootstrap基础学习【表单含按钮】(二)

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  5. 五十二:WTForms表单验证之基本使用

    作用:1.做表单验证,把用户提交的数据验证是否合法2.做模板渲染 安装:pip install wtforms 表单验证1.自定义一个表单类,继承wtforms.Form2.定义好需要验证的字段,字段 ...

  6. 用dedecms自定义表单创建简易自助预约系统

    建站往往需要根据客户的需求来增加相应的功能,比如预约.平时用比较多的是织梦系统,那么如何用dedecms自定义表单创建简易自助预约系统呢? 进入dedecms后台,左侧菜单中依次点击“核心” - 频道 ...

  7. Web开发——HTML基础(HTML表单/下拉列表/多行输入)

    参考: 参考:http://www.w3school.com.cn/html/html_forms.asp 目录: 1.<form> 元素 1.1 <input> 元素(输入属 ...

  8. flask用宏渲染表单模板时,表单提交后,如果form.validate_on_submit()返回的是false的可能原因

    flask用宏渲染表单模板时,表单提交后,提交的内容符合DataRequired()校验, 但是form.validate_on_submit()返回的是False, 原因可能是表单模板中的<f ...

  9. 雷林鹏分享:jQuery EasyUI 表单 - 创建异步提交表单

    jQuery EasyUI 表单 - 创建异步提交表单 本教程向您展示如何通过 easyui 提交一个表单(Form).我们创建一个带有 name.email 和 phone 字段的表单.通过使用 e ...

随机推荐

  1. 深入GPU硬件架构及运行机制

    目录 一.导言 1.1 为何要了解GPU? 1.2 内容要点 1.3 带着问题阅读 二.GPU概述 2.1 GPU是什么? 2.2 GPU历史 2.2.1 NV GPU发展史 2.2.2 NV GPU ...

  2. 【selenium】- 自动化框架环境搭建

    本文由小编根据慕课网视频亲自整理,转载请注明出处和作者. 1. 环境搭建 本课程选用的是selenium + java.   2. java环境的搭建 环境变量配置: 以win10为例,打开控制面板& ...

  3. D-Distance_2019牛客暑期多校训练营(第八场)

    题目链接 Distance 题意 1<=nmh,q<=1e5 q个操作 1 x y z往坐标里加入一个点 2 x y z查询距离该点最近的点的距离(曼哈顿距离) 题解 做法一 将要插入的点 ...

  4. POJ - 3164-Command Network 最小树形图——朱刘算法

    POJ - 3164 题意: 一个有向图,存在从某个点为根的,可以到达所有点的一个最小生成树,则它就是最小树形图. 题目就是求这个最小的树形图. 参考资料:https://blog.csdn.net/ ...

  5. HDU 4322Candy 最大费用最大流

    由于被小孩子不喜欢的糖果的对小孩产生的效力是一样的,所以我们在网络流的时候先不考虑. 1 - 源点0到1~N个糖果,容量为1,费用为02 - 根据like数组,like[i][j] == 1时在糖果j ...

  6. Codeforces 919D Substring (拓扑排序+树形dp)

    题目:Substring 题意:给你一个有向图, 一共有n个节点 , m条变, 一条路上的价值为这个路上出现过的某个字符最多出现次数, 现求这个最大价值, 如果价值可以无限大就输出-1. 题解:当这个 ...

  7. hdu 4725 The Shortest Path in Nya Graph(建图+优先队列dijstra)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4725 题意:有n个点和n层,m条边,每一层的任意一个点都可以花费固定的值到下一层或者上一层的任意点 然 ...

  8. NOIP 2016 组合数问题 题解

    一道sb题目,注意范围,可打表解决,打出杨辉三角,在用前缀和求解即可 代码(一维前缀和) #include<bits/stdc++.h> using namespace std; int ...

  9. MPA JS CSS预处理方案

    1.WebPack 添加配置文件webpack.config.js,直接在当前目录运行 webpack. var basepath = '/root/webapps/happ'; var glob = ...

  10. ssh的秘钥认证

    ssh秘钥认证简述 通常我们会使用x-shell.putty.MobaXterm等支持ssh连接的工具去登录服务器进行管理,而执行ssh命令.scp命令等从一台服务器登录另外一台服务器的时候,通常需要 ...