一、原生表单

模板页面

<form action="{{ url_for('check') }}" method="post">
<p>用户名: <input type="text" name="username"></p>
<p>密码: <input type="password" name="userpass"></p>
<p><input type="submit" value="submit"></p>
</form>

  

在manage.py中

#原生表单
@app.route('/form1')
def form1():
return render_template('form1.html')
​
#获取原生表单提交的数据
@app.route('/check',methods=['POST'])
def check():
print(request.form.get('userpass'))
print(request.form.get('username'))
return '提交过来了'

  

将manage.py中的俩个路由合并为同一个


@app.route('/form1',methods=['GET','POST'])
def form1():
if request.method == 'POST':
print(request.form.get('userpass'))
print(request.form.get('username'))
return render_template('form1.html')

  

二、FLASK-WTF

说明: 是一个用于表单处理,校验 ,提供了csrf等功能

安装: sudo pip3 install flask-wtf

(1) 字段类型

字段类型 字段说明
StringField 普通文本字段
SubmitField 提交
PasswordField 密码字段
TextAreaField 多行文本域字段
DateField 日期字段 datetime.date
DateTimeFiled 时间时期 datetime.datetime
HiddenField 隐藏域字段
IntegerField 数值字段
FloatField 小数字段
BooleanField bool字段 True和False
RadioFIeld 单选字段
SelectField 下拉字段
FileField 文件上传字段

(2) 验证器

验证器名称 说明
DataRequired 必填
Email 验证邮箱
IPAddress 验证ip地址 默认ipv4
Length 验证当前值的长度 min 和max
NumberRange 数值的范围 提供了 min 和max
EqualTo 验证俩个输入框的值是否相同
URL 验证是否为有效的url地址
Regexp 正则匹配

(3) 实例 wtf_表单

模板文件 form.html

<form action="{{ url_for('wtf_form') }}" method="post">
{{ form.csrf_token }}
<p>{{ form.username.label() }}{{ form.username(style='color:red;',placeholder='请输入用户名...') }}</p>
<p>{{ form.userpass.label() }}{{ form.userpass() }}</p>
<p>{{ form.submit() }}</p>
</form>

  

manage.py


class Login(FlaskForm):
username = StringField('用户名',validators=[Length(min=6,max=12,message='用户名长度为6~12位'),DataRequired(message='用户名不能为空')])
userpass = PasswordField('密码',validators=[Length(min=6,max=12,message='密码长度为6~12位'),DataRequired(message='密码不能为空')])
submit = SubmitField('登录') ​
@app.route('/wtf_form',methods=['GET','POST'])
def wtf_form():
form = Login()
if request.method == 'POST':
if form.validate_on_submit():
print(request.form.get('userpass'))
print(request.form.get('username'))
return '数据提交成功'
return render_template('wtf_form.html',form=form)

  

注意:

form.validate_on_submit() 只有在数据正确 并且验证csrf通过 才为真

(4) 使用bootstrap快速渲染

导入


{% import 'bootstrap/wtf.html' as wtf %}

  

模板文件

{{ wtf.quick_form(form,url_for('form1')) }}
{{ wtf.quick_form(form) }}

  

manage.py路由 不变

flask表单的更多相关文章

  1. flask表单,orm,csrf

    flask表单是flask中最基本的功能. 它是负责HTML页面中数据采集的部分,它由三部分组成:表单标签,表单域,表单按钮组成,通过表单用户输入的数据提交给服务器. flask表单封装了WTForm ...

  2. flask表单提交的两种方式

    一.通用方式 通用方式就是使用ajax或者$.post来提交. 前端html <form method="post" action="/mockservice&qu ...

  3. Flask表单(Flask-WTF)

    1.request.from获取POST表单数据 # hello.py #coding:utf-8 from flask import Flask,request,render_template ap ...

  4. Flask表单(form)的应用

    导入模块request模块 #指定请求方式,使用methods属性 @app.route("/",methods=['GET','POST']) def index(): #判断c ...

  5. flask 表单

    表单 在Web程序中,表单时和用户交互最常见的方式之一.用户注册.登录.撰写文章.编辑设置,无一不用到表单.不过,表单的处理不简单.要创建表单,验证用户输入的内容,向用户显示错误提示,还要获取并保存数 ...

  6. flask表单标签

    环境:python2.7+flask+flask_wtf 内容:flask的部分常用表单标签 test.py # -*- coding: utf-8 -*- # flask web_form 表单控件 ...

  7. Flask从入门到精通之Flask表单渲染成HTML

    表单字段是可调用的,在模板中调用后会渲染成HTML.假设视图函数把一个NameForm 实例通过参数form 传入模板,在模板中可以生成一个简单的表单,如下所示: <form method=&q ...

  8. Flask从入门到精通之Flask表单

    Flask请求对象包含客户端发出的所有请求信息.其中,request.form 能获取POST 请求中提交的表单数据.尽管Flask 的请求对象提供的信息足够用于处理Web 表单,但有些任务很单调,而 ...

  9. flask表单flask-wtf

    一.安装pip install flask-wtf 二.创建一个flask的项目引入相对应的包 from flask import Flask,render_template import flask ...

  10. Flask表单验证

    学习内容:①判断请求方式(request.method) from flask import Flask,render_template,request app = Flask(__name__) @ ...

随机推荐

  1. LeetCode--No.011 Container With Most Water

    11. Container With Most Water Total Accepted: 86363 Total Submissions: 244589 Difficulty: Medium Giv ...

  2. [视频]K8飞刀 BadUSB Teensy自动种马演示教程

    [视频]K8飞刀 Teensy USB自动种马演示教程 链接: https://pan.baidu.com/s/13bM1XSLrhlf90FDmPGfo1g 提取码: gy2q 源码:https:/ ...

  3. 浏览器上安装vue devtools

    安装前要检查一下node版本的(node -v),必须将版本提高到>4.4.7.低版本的node在安装devtools时执行npm install 时报错.如何升级node版本,若在window ...

  4. .Net RPC框架Thrift的用法

      关于Thrift 下面是来自百度百科关于Thrift的介绍: thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发.它结合了功能强大的软件堆栈和引擎,以构建在 C++, Java, Go ...

  5. docker+nginx实现负载均衡

    配置nginx配置文件(配置文件运行时是会加载到docker进程中)先建立nginx相关文件和目录,对应下面启动命令中的挂载位置,把主配置文件nginx.conf放到对应位置“/etc/docker/ ...

  6. postgres 更新数据表

    新增非空列: alter table t_test add column user_id integer; update t_test set user_id=0; alter table t_tes ...

  7. 谈谈对JVM的理解

            JVM可谓是学习JAVA基础中的基础了,但仍有不少同学对JVM概念还是比较模糊,甚至没有听说过,对java的理解也只是在基础语法 层面,本文就将对JVM进行初步介绍,因篇幅所限,只能介 ...

  8. php持续推送信息到客户端的方法

    <?php set_time_limit(0); $i=1; while($i++) { echo $i,'<br />'; ob_flush();//冲刷出(送出)输出缓冲区中的内 ...

  9. mysql更新表中日期字段时间

    DATE_ADD和DATE_SUB函数可以用INTERVAL关键字标识的时间间隔进行加减操作,类似于PHP中的strtotime函数. 1.更新表中有效期valid_time字段值都增加一天 UPDA ...

  10. JavaWeb学习 (十八)————JSP标签

    一.JSP标签介绍 JSP标签也称之为Jsp Action(JSP动作)元素,它用于在Jsp页面中提供业务逻辑功能,避免在JSP页面中直接编写java代码,造成jsp页面难以维护. 二.JSP常用标签 ...