Java教程

Flask数据交互

本文主要是介绍Flask数据交互,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、使用Flask处理表单

        表单是搜集用户数据信息的各种表单元素的集合区域,它的作用是实现用户和服务器的数据交互。通过表单搜集客户端输入的数据信息,然后提交到网站服务器进行处理(搜集录入/比对验证等)。Form表单是Web应用中最基础的一部分,Form-WTF扩展提供了良好的支持,这里介绍使用Flask处理通用表单和Flask-WTF表单处理方法。

1、使用Flask处理通用表单

      对表单没有进行必要的保护措施

2、Flask-WTF表单处理方法。

      1)启用CSRF保护

       Flask-WTF提供了对所有Form表单免受跨站请求伪造(CSRF)攻击的技术支持;

编写config.py配置文件  :

SECRET_KEY = "zya123456789"
CSRF_ENABLED = True

      其中,SECRET_KEY用来建立加密的令牌,用于验证Form表单提交,可以设置复杂些。

    app.py文件:

from flask import Flask,flash
from flask import url_for,render_template
# from flask_wtf.csrf import CSRFProtect
#导入定义的BaseLogin
from forms import BaseLogin
import config
app = Flask(__name__)
app.config.from_object(config)
#定义处理函数和路由规则,接收GET和POST请求
@app.route('/login',methods=('POST','GET'))
def baselogin():
    form=BaseLogin()
    #判断是否是验证提交
    if form.validate_on_submit():
        #跳转
        flash(form.name.data+'|'+form.password.data)
        return '表单数据提交成功!'
    else:
        #渲染
        return render_template('login.html',form=form)
@app.route('/')
def hello_world():
    return 'Hello World!'
if __name__ == '__main__':
    app.run(debug=True)

form.py文件:

from flask_wtf import Form  #引入Form基类
from wtforms import StringField,PasswordField #引入Form元素父类
from wtforms.validators import DataRequired,Length #引入Form验证父类

class BaseLogin(Form):  #登录表单类,继承与Form类
    #用户名
    name=StringField('name',validators=[DataRequired(message="用户名不能为空")
        ,Length(6,16,message='长度位于6~16之间')],render_kw={'placeholder':'输入用户名'})
    #密码
    password=PasswordField('password',validators=[DataRequired(message="密码不能为空")
        ,Length(6,16,message='长度位于6~16之间')],render_kw={'placeholder':'输入密码'})

二、使用flask上传文件

三、Cookie的使用

      Cookies是一种能够让网站服务器把少量数据存储到客户端的硬盘或者内存,或是从客户端的硬盘读取数据的一种技术。当再次浏览某网站时,浏览器将存放于本地的用户信息递交给服务器,服务器就可以识别用户的身份。

四、Session的使用

      Session是基于Cookie实现的,保存在服务端的键值对中

五、钩子函数的使用

      有时需要在正常执行代码的前、中、后时期,强行执行一段我们想要执行的代码,实现这种功能的函数,就称为钩子函数。其实质就是用特定装饰器装饰的函数。

这篇关于Flask数据交互的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!