一、原生表单

模板页面

<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. c++编程之内存的分配

    当我们在进行编程时,特别是使用c++语言进行编程时,需要知道内存有几个内存区可供我们使用,因为c++可以直接操作内存.接下让我们来看看内存中的几大内存区. 1.栈区 栈区(stack)是速度最快的一个 ...

  2. HDU 5113--Black And White(搜索+剪枝)

    题目链接 Problem Description In mathematics, the four color theorem, or the four color map theorem, stat ...

  3. textarea 赋值的方法

    textarea 赋值的方法 <textarea name="" rows="3" id="note21" ></text ...

  4. HW2018校招研发笔试编程题

    1. 数字处理 题目描述:给出一个不多于5位的整数,进行反序处理,要求 (1)求出它是几位数 (2)分别输出每一个数字(空格隔开) (3)按逆序输出各位数字(仅数字间以空格间隔,负号与数字之间不需要间 ...

  5. Windows环境下使用bitvise架构sftp服务器

    Windows环境下使用Bitvise架构sftp服务器 Bitvise分成Bitvise ssh server和Bitvise ssh client 0 说明:文档暂时只使用Bitvise工具做搭建 ...

  6. 字符串replaceAll()方法报错:java.util.regex.PatternSyntaxException:Unclosed group near index...

    Unclosed group near index错误 之前自己写的一个模块在项目上线后最近频频出现tomcat崩掉的情况,从log看出现如下的报错信息: java.util.regex.Patter ...

  7. kubeadm部署kubernetes-1.12.0 HA集群-ipvs

    一.概述 主要介绍搭建流程及使用注意事项,如果线上使用的话,请务必做好相关测试及压测. 1.基础环境准备 系统:ubuntu TLS 16.04  5台 docker-ce:17.06.2 kubea ...

  8. 方便操作的命名范围scope

    <?php namespace Goods\Model; use Think\Model; class GoodsModel extends Model { protected $_scope ...

  9. python实现定时任务

    定时任务的实现方式有很多种,如windows服务,借助其他定时器jenkins运行脚本等方式.本文介绍的是python中的一个轻量级模块schedule. 安装 pip命令:pip install s ...

  10. Struts2学习(六)———— 文件上传和下载

    一.单文件上传 在没学struts2之前,我们要写文件上传,非常麻烦,需要手动一步步去获取表单中的各种属性,然后在进行相应的处理,而在struts2中就不需要了,因为有一个fileUpload拦截器帮 ...