flask表单是flask中最基本的功能。

它是负责HTML页面中数据采集的部分,它由三部分组成:表单标签,表单域,表单按钮组成,通过表单用户输入的数据提交给服务器。

flask表单封装了WTForms,并且它有验证表单的功能。

WTForms支持的HTML标准字段

代码验证

flask的消息闪现依赖与flask库

创建表单

导入模块

#flask的消息闪现依赖于flask库,用户发送的请求方式存储在request模块中
#跳转依赖于redirct模块,还可以通过url_for
from flask import Flask,flash,render_template,request,session,redirect,url_for
#导入wtf扩展表单
from flask_wtf import FlaskForm
#导入自定义表单需要用到的表单类型
from wtforms import SubmitField,StringField,PasswordField
 

#新建一个保单类
class RegisterForm(FlaskForm):
username = StringField('用户名')
password = PasswordField('密码')
password1 = PasswordField('确认密码')
submit = SubmitField('注册')
 
 
#建立对象
app = Flask(__name__)
#载入配置文件
app.config.from_pyfile('config.ini')
 
 
 

获取表单数据的验证登陆逻辑

#指定请求方式,使用methods属性

@app.route('/',methods=['GET','POSt'])
def index():
#判断client发送的请求类型
#在自己请求自己的逻辑中,GET只用来解析模板,而POST用来判断数据逻辑
if request.method == 'POST':
#使用form属性来接收表单提交过来的数据
username = request.form.get("username")
password = request.form.get("password")
password1 = request.form.get("password1")
#模拟登陆,将用户名和密码存到session
# session['username'] = username
# session['password'] = password
#判断数据是否同时存在
#等同于 if username == '' or password == '' or password1 == ''
if not all([username,password,password1]):
#利用闪现消息来提醒用户
flash("参数不足")
elif password != password1:
flash('密码不一致')
else:
flash('注册成功')
#return '成功'
# # 第一中直接接跳转
# return redirect(' http://127.0.0.1:5000/hello')
# #第二种通过url_for方法跳转
 return redirect(url_for('hello'))
#将定义好的表单传递给末班,进行方法化设置23w4
return render_template('day4_wtform.html',form=RegisterForm())
#登路成功后跳转的页面
# @app.route("/hello")
# def hello():
# return 'hello 欢迎 %s' % session['username']
 
if __name__ == "__main__":
app.run()

创建from.html

{#action属性,如果不写,默认提交给自己,methods属性,指定表单的提交方式#}
<form method="POST">
<label>用户名</label>
<input type="text" name="username" placeholder="请输入用户名">
<br />
<label>密码</label>
<input type="password" name="password" />
<br />
<label>确认密码</label>
<input type="password" name="password1" />
<br />
{#将flash消息闪现和后台联系起来#}
{% for message in get_flashed_messages() %}
{{ message }}
{% endfor %}
<input type="submit" value="注册">
</form>

wtform组件

<form method="POST">
{# 通过key调用出来来的值#}
{{ form.username.label }} : {{ form.username }}<br />
{{ form.password.label }} : {{ form.password }}<br />
{{ form.password1.label }} : {{ form.password1 }}<br />
{#将flash消息闪现和后台联系起来#}
{# 将消息闪现的所有信息便历,去除需要返回给用户的信息#}
{% for message in get_flashed_messages() %}
{{ message }}
{% endfor %}
{{ session['username'] }}
{{ session['password'] }}
<br />
{{form.submit}}
</form>

CSRF

CSRF全拼为Cross Site Request Forgery ,译为跨站伪造。跨站伪造指攻击者盗用了你的身份,以你的身份发送恶意请求,例如:以你的名义发送邮件,发消息等;造成的问题:个人隐私泄露以及财产安全。

防止CSRF攻击

ORM

全拼:Object-Relation Mapping,中文译为:对象-关系映射。主要实现模型对象到关系数据库数据的映射。

orm图解

flask表单,orm,csrf的更多相关文章

  1. Django---静态文件配置,post提交表单的csrf问题(日后细说),创建app子项目和分析其目录,ORM对象关系映射简介,Django操作orm(重点)

    Django---静态文件配置,post提交表单的csrf问题(日后细说),创建app子项目和分析其目录,ORM对象关系映射简介,Django操作orm(重点) 一丶Django的静态文件配置 #we ...

  2. HTML form without CSRF protection,HTML表单没有CSRF保护

    HTML form without CSRF protection =HTML表单没有CSRF保护 CSRF是伪造客户端请求的一种攻击,CSRF的英文全称是Cross Site Request For ...

  3. 03-模板(过滤器,代码复用,表单,CSRF)

    模块代码复用 在模板中,可能会遇到以下情况: 多个模板具有完全相同的顶部和底部内容 多个模板中具有相同的模板代码内容,但是内容中部分值不一样 多个模板中具有完全相同的 html 代码块内容 像遇到这种 ...

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

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

  5. Flask表单(Flask-WTF)

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

  6. Flask表单(form)的应用

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

  7. flask表单

    一.原生表单 模板页面 <form action="{{ url_for('check') }}" method="post"> <p> ...

  8. flask 表单

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

  9. flask表单标签

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

随机推荐

  1. swftools安装教程

    1 安装说明 本教程以环境为CentOS6.5+swftools-0.9.1.安装目录等可根据自己需要更改. 2 安装过程 1)下载软件 http://www.swftools.org/downloa ...

  2. 小程序WXSS布局

    1. 尽量采用flex 布局,指定flex-direction是row( 从左到右)还是column (从上到下) 特别要记得写 flex-wrap: wrap; 不然超出屏幕部分不会换行 displ ...

  3. Java逻辑

    1.开发简单Java应用程序 1-1:什么是程序 程序:为了让计算机执行某些操作或解决某个问题而编写的一系列有序指令的集合.1-2:为什么学习Java Java是现在的主流1-3:Java可以做什么 ...

  4. js中如何返回一个存放对象的数组?

    我这边需要返回后台数据的形式是这样的 {[ { ", }, { ", }, { ", }, { ", }, { ", } ]} 页面是通过循环去获取每 ...

  5. Ubuntu下环境变量的设置

    远程登录时,不是ssh登陆:  xrdp 可以修改并添加 /etc/xrdp/startwm.sh 代码: #!/bin/sh if [ -r /etc/default/locale ]; then  ...

  6. HTTP、TCP、UDP的区别

    TCP.UDP的区别 1.TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接 2.TCP提供可靠的服务.也就是说,通过TCP连接传送的数据,无差错,不丢失,不重 ...

  7. python2x 与 python3x 区别

    python2.x 与 python3.x 的区别: 1. python2.x 的源码编码不规范,源码重复较多:python3.x 的源码编码规范,清晰.优美.简单 2. python2.x的默认字符 ...

  8. [BZOJ1588]营业额统计

    Problem 每次给你一个数,找出前面的数与这个数的差的绝对值的最小值 Solution Splay Notice 找不到前驱和后继时,会出错. Code #include<cmath> ...

  9. Spring、SpringMVC、Hibernate详细整合实例,包含所有步骤

    Eclipse完整工程如下 Jar包如下 CSDN下载地址:https://download.csdn.net/download/zhutouaizhuwxd/9721062 其中,整个工程主要可以分 ...

  10. 玩转X-CTR100 l STM32F4 l DSP指令集性能测试

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器 DSP库的 ...