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__) @ ...
随机推荐
- LeetCode:114_Flatten Binary Tree to Linked List | 将一棵二叉树变成链表的形式 | Medium
要求:Given a binary tree, flatten it to a linked list in-place.将二叉树转化为平坦序列的树.比如: 结题思路: 该题有个提示,转化后的树的序列 ...
- typescript 的安装
1.全局安装 typeScript 包 npm install typescript -g (tsc -v 查看ts版本)2.解决模块的声明文件问题 npm install @type ...
- rocketmq自启动配置
捣鼓rocketmq自启动半天发现是启动脚本里没有声明java环境 现记录下 脚本 #!/bin/bash export JAVA_HOME=/opt/data/jdk1.8/jdk1.8.0_161 ...
- [视频]K8飞刀 WordPress XSS添加管理员 & GetShell 教程
[视频]K8飞刀 WordPress XSS添加管理员 & GetShell 教程 https://pan.baidu.com/s/1hq4LsmK
- HDU 6020---MG loves apple(枚举)
题目链接 Problem Description MG is a rich boy. He has n apples, each has a value of V(0<=V<=9). A ...
- LDA-线性判别分析(三)推广到 Multi-classes 情形
本来是要调研 Latent Dirichlet Allocation 的那个 LDA 的, 没想到查到很多关于 Linear Discriminant Analysis 这个 LDA 的资料.初步看了 ...
- IMEI
IMEI(International Mobile Equipment Identity)是国际移动设备身份码的缩写,国际移动装备辨识码,是由15位数字组成的"电子串号",它与每台 ...
- Eclipse 项目导入 Android Studio 导致的乱码问题
最近有一个 Eclipse 项目导入 Android Studio 1.4 时出现乱码,Build 提示 Error:(38, 5) 閿欒: 缂栫爜UTF-8鐨勪笉鍙槧灏勫瓧绗?. 源代码是 GB ...
- OpenGL10-骨骼动画原理篇(1)
视频教程请关注 http://edu.csdn.net/lecturer/lecturer_detail?lecturer_id=440 本例程展示如何建立骨骼动画,有些人叫蒙皮动画 定义如下: 当前 ...
- [java初探10]__关于数字处理类
前言 在我们的日常开发过程中,我们会经常性的使用到数字类型的数据,同时,也会有众多的对数字处理的需求,针对这个方面的问题,在JAVA语言中.提供解决方法的类就是数字处理类 java中的数字处理类包括: ...