flask表单
一、原生表单
模板页面
<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 | 必填 |
验证邮箱 | |
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表单的更多相关文章
- flask表单,orm,csrf
flask表单是flask中最基本的功能. 它是负责HTML页面中数据采集的部分,它由三部分组成:表单标签,表单域,表单按钮组成,通过表单用户输入的数据提交给服务器. flask表单封装了WTForm ...
- flask表单提交的两种方式
一.通用方式 通用方式就是使用ajax或者$.post来提交. 前端html <form method="post" action="/mockservice&qu ...
- Flask表单(Flask-WTF)
1.request.from获取POST表单数据 # hello.py #coding:utf-8 from flask import Flask,request,render_template ap ...
- Flask表单(form)的应用
导入模块request模块 #指定请求方式,使用methods属性 @app.route("/",methods=['GET','POST']) def index(): #判断c ...
- flask 表单
表单 在Web程序中,表单时和用户交互最常见的方式之一.用户注册.登录.撰写文章.编辑设置,无一不用到表单.不过,表单的处理不简单.要创建表单,验证用户输入的内容,向用户显示错误提示,还要获取并保存数 ...
- flask表单标签
环境:python2.7+flask+flask_wtf 内容:flask的部分常用表单标签 test.py # -*- coding: utf-8 -*- # flask web_form 表单控件 ...
- Flask从入门到精通之Flask表单渲染成HTML
表单字段是可调用的,在模板中调用后会渲染成HTML.假设视图函数把一个NameForm 实例通过参数form 传入模板,在模板中可以生成一个简单的表单,如下所示: <form method=&q ...
- Flask从入门到精通之Flask表单
Flask请求对象包含客户端发出的所有请求信息.其中,request.form 能获取POST 请求中提交的表单数据.尽管Flask 的请求对象提供的信息足够用于处理Web 表单,但有些任务很单调,而 ...
- flask表单flask-wtf
一.安装pip install flask-wtf 二.创建一个flask的项目引入相对应的包 from flask import Flask,render_template import flask ...
- Flask表单验证
学习内容:①判断请求方式(request.method) from flask import Flask,render_template,request app = Flask(__name__) @ ...
随机推荐
- JS闭包与JS函数
先说说在网上看到的一个闭包案例: var add = (function () {var counter = 0;return function () {return counter += 1;}}) ...
- java也可以做黑客?
记得:Eric S. Raymond在他著名的文章<如何成为一名黑客>中,将Java列为五门黑客必备语言之一,其它四门分别是:C.C++.Perl.Python. 而Java最大的特性是系 ...
- web自动化测试---xpath方式定位页面元素
在实际应用中,如果存在多个相同元素,包括属性相同时,一般会选用这种方式,当然如果定位属性唯一的话,也是可以使用的,不过这种方式没有像id,tag,name等容易理解,下面讲下xpath定位元素的方法 ...
- Odoo : ORM API
记录集 model的数据是通过数据集合的形式来使用的,定义在model里的函数执行时它们的self变量也是一个数据集合 class AModel(models.Model): _name = 'a.m ...
- SQL Server性能优化(12)非聚集索引的组合索引存储结构
一,非聚集索引组合索引 用户可以在多个列上建立索引,这种索引叫做复合索引(组合索引).但复合索引在数据库操作期间所需的开销更小,可以代替多个单一索引.当表的行数远远大于索引键的数目时,使用这种方式可以 ...
- SQL Server性能优化(10)非聚集索引的存储结构
一,新建测试表 CREATE TABLE [dbo].[Users]( ,) NOT NULL, ) NOT NULL, [CreatTime] [datetime] NOT NULL ) ON [P ...
- 独享锁 & 共享锁
独享锁(互斥锁):同时只能有一个线程获得锁.比如,ReentrantLock 是互斥锁,ReadWriteLock 中的写锁是互斥锁. 共享锁:可以有多个线程同时获得锁.比如,Semaphore.Co ...
- 一篇极好的Git 总结
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由腾讯工蜂发表于云+社区专栏 常用命令 简单的,常用的命令也就几个.但是想非常熟练使用,怕是要记住几十个. Workspace:工作区( ...
- 负载均衡+session共享(memcached-session-manager实现)
前言 先给大家伙拜个年,祝大家:新的一年健健康康,平平安安! 本文的形成参考了很多人的博客,最多的应该是青葱岁月兄的这篇博客,大家可以先去看下,熟悉一些内容,因为本文是直接实践,一些理论性的知识就需要 ...
- Jmeter接口测试——跨线程组调用参数(token为例)
昨天学会了动态获取token,今天测试接口时希望能够实现跨线程调用token值. 实现原理: jmeter本身的“__setProperty”函数可以把某参数的值设置成jmeter本身的内置属性,而j ...