一、原生表单

模板页面

<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. IDEA内置git功能的使用教程

    IDEA内置git功能的使用教程 IDEA git  IDEA被公认为是最好的java开发工具,除了在代码助手.代码提示.重构工具等方面有比较好的支持,还在各类版本控制工具(git.tfs.svn.g ...

  2. [P4921] 情侣?给我烧了!

    回顾一下错排公式 错排问题: 设n位错排数为D[n].考虑元素1的位置,设置为k(有n-1中 ):在考虑元素k的位置, 若为1,则转换为n-2位的错排:否则,视元素k为元素1(不能放在位置1),转换为 ...

  3. Xpath定位方法深入探讨及元素定位失败常见情况

    一.Xpath定位方法深入探讨 (1)常用的Xpath定位方法及其特点 使用绝对路径定位元素. 例如: driver.findElement(By.xpath("/html/body/div ...

  4. 使用Let's Encrypt加密你的小站

    介绍 Let's Encrypt是一个免费并且开源的CA,且已经获得Mozilla.微软等主要浏览器厂商的根授信.它极大低降低DV证书的入门门槛,进而推进全网的HTTPS化. Certbot is a ...

  5. sql server 备份与恢复系列六 文件组备份与还原

    一. 概述 文件备份是指备份一个或多个文件或文件组中的所有数据.使用文件备份能够只还原损坏的文件,而不用还原数据库的其余部份,从而加快恢复速度.例如,如果数据库由位于不同磁盘上的若干文件组成,在其中一 ...

  6. mysql 开发进阶篇系列 26 数据库RPM安装演示

    一.概述 上一章讲到了RPM安装后的文件目录,这章还是介绍下安装步骤.也便以后做参考吧. 1. 移出centos 7系统自带的mysql库 yum remove mysql-libs 2. 将下载的m ...

  7. 从零开始学 Web 之 HTML(一)认识前端

    大家好,这里是 Daotin 从零开始学 Web 系列教程.此文首发于「 Daotin的梦呓 」,欢迎大家订阅关注.在这里我会从 Web 前端零基础开始,一步步学习 Web 相关的知识点,期间也会分享 ...

  8. 从零开始学 Web 之 jQuery(一)jQuery的概念,页面加载事件

    大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...

  9. SQL 必知必会·笔记<17>使用存储过程

    存储过程就是为以后使用而保存的一条或多条SQL 语句.可将其视为批文件,虽然它们的作用不仅限于批处理. 1. 存储过程的优点和缺点 存储过程的优点: 使用存储过程有三个主要的好处,即简单.安全.高性能 ...

  10. docker push 出现:x509: certificate signed by unknown authority

    今天,部署生产的程序的时候,出现一个问题:编译正常,但是,docker 把编译好的image 推送到生产环境上去的时候,出现:x509: certificate signed by unknown a ...