flask数据库交互,flask前端与后端的数据交互
本文主要介绍Flask框架中数据交互的实现。通过示例代码详细介绍,对大家的学习或工作有一定的参考价值。有需要的朋友下面和边肖一起学习。
00-1010 1使用Flask处理表单1.1使用Flask处理一般表单1.2使用Flask-WTF处理表单2使用Flask上传文件3 cookie的使用3.1 cookie的基本概念3.2 cookie的基本使用4会话的使用4.1会话的基本配置4.2会话的基本使用
目录
什么是表格?表单是收集用户数据信息的各种表单元素的集合区域。其功能是实现用户和服务器之间的数据交互。通过表单收集客户端输入的数据信息,以及如何提交给网站服务器进行处理(收集和输入/对比和验证等。).表单是Web应用程序中继承最多的部分。Flask-WTF扩展为处理表单提供了很好的支持。
1 使用Flask处理表单
Flask request对象包含了客户端发送的所有请求信息,其中request.form可以获取POST请求中提交的表单数据。虽然Flask的request对象为处理Web表单提供了足够的信息,但是有些任务比较单调,需要重复操作。
indexhtml
!声明文档类型
html lang=en
头
meta charset=UTF-8
标题标题/标题
/头
身体
风格
. div1 {
height: 180px
宽度: 380 px;
border: 1px solid # 8A8989
margin: 0自动;
}
.输入{
显示:块;
宽度: 350 px;
height: 40px
margin: 10px auto
}
.按钮{
background: # 2066C5
color:白色;
font-size : 18px;
font-weight:粗体;
height: 50px
border-radius : 4px;
}
/风格
div class=div1
{# action:接受的路线#}
表单操作=/login 方法=post
type= text class= input name= username placeholder=请输入用户名
type= password class= input name= pwd placeholder=请输入密码
Type=“提交”value=“登录”class=“输入按钮”
/表单
/div
/body
/html
app.py
# @time:2020/11/8 16:18
# Author:Small-J
从烧瓶导入烧瓶,渲染模板,请求
app=Flask(__name__)
@app.route(/)
def hello_world():
返回render_template(index5.html )
@app.route(/login ,methods=[GET , POST])
定义登录():
如果请求
uest.method == GET:
return 这是get请求
else:
return 这是post请求
if __name__ == __main__:
app.run(debug=True)
发送post请求成功
使用Postman发送Get请求成功
在上面的工程中,对表单没有进行必要的保护措施,很容易被人利用,控制用户在当前已登录的Web应用程序上执行非本意的操作。因此,在实际部署服务器上的代码时,不建议使用这个方式处理表单,推荐使用方式进行表单处理。
1.2 使用Flask-WTF处理表单
的安装:pip install flask-wtf
启动CSRF保护
Flask-WTF
提供了对所有Form表单免受跨站请求伪造(Cross-Site Request Forgery, CSRF)攻击的技术支持(通过添加动态token令牌的方式)
我们在Flask根目录下新增config.py
配置文件,要启动CSRF保护,可以在config.py
中定义两个变量
# @time:2020/11/8 16:54
form.py
# @time:2020/11/8 17:00
app.py
# @time:2020/11/8 16:54
login.html
<!DOCTYPE html>
2 使用Flask上传文件
在Web开发时,经常需要实现文件上传功能。可以以普通方式进行文件的上传,上传过程一般要检查上传的文件格式是否符合要求,文件保存时注意绝对路径和相对路径。
Flask文件上传比较简单,需要注意以下3点要求:
一个标签被标记有,并且在里面包含一个
服务器端应用通过请求对象上的
files
字典访问文件。使用文件的
save()
方法将文件永久地保存在文件系统上的某处。注意:表单中必须要求,否则上传文件无效。一般可以写成
import os
, from os import path
指的是导入os模块及os模块下的path方法。方法下相关属性如下:
os.path.sep
: windows下路径分隔符是反斜杠;
os.path.altsep
: linux下路径分隔符是/
根目录:os.path.curdir
当前目录 :os.path.pardir
父目录 :os.path.abspath(path)
绝对路径:
os.path.join()
注意:什么是文件分隔符?将表格转换为文本时,用分隔符标识文件分隔的位置或将文本转换成表格时,用其标识新行或新列的起始位置。不同操作系统下文件分隔符是不同的,Windows中是"", Linux中是"/"
# @time:2020/11/8 21:48
upload.html
<!DOCTYPE html>
上传文件
3 Cookie的使用
Cookie有时也记作Cookies,它现在经常被大家提到,那么到底什么是Cookies?它有什么作用呢?Cookies是一种能够让服务器把少量数据储存到客户端的硬盘或内存,或是从客户端的硬盘读取数据的一种技术。当你再次浏览某网站时,浏览器将存放于本地的用户身份信息递交给服务器,服务器就可以识别用户的身份
3.1 Cookie的基本概念
当用户访问服务器并登录成功后,服务器向客户端返回的一些数据(Cookie),客户端将服务器返回的Cookie数据保存在本地,当用户再次访问服务器时,浏览器自动携带Cookie数据给服务器,服务器便自动访问者的身份信息。
Cookie基本的语法:
参数描述name必需项,规定Cookie的名称value必需项,规定Cookie的值expire可选项,规定Cookie的有效期path可选项,规定Cookie在当前Web下哪些目录有效domain可选项,规定Cookie作用的有效域名secure可选项,规定是否通过安全的HTTPS连接来传输Cookie
3.2 Cookie的基本使用
我们在Flask中自定义Cookie,实际上就是在相应Response的Set-Cookie
字段中新增加自定义的键值对。而获取Cookie,就是在请求Request中通过键获取对应的值,所以,在工程中必须引入Request和Response模块。
设置Cookie
设置Cookie主要有两种方法,一种是通过Response
对象设置,另一种是通过直接设置表单头来实现。
# @time:2020/11/9 13:20
查看Cookie
查看已经设置好的Cookie,可以通过来得到
@app.route(/get_cookie)
删除Cookie
删除已经设置好的Cookie,可以通过delete_cookie()
来完成。delect_cookie
括号中对象为被删除的对象名,比如delect_cookie("username")
@app.route(/del_cookie)
4 Session的使用
Session是基于Cookie实现的,保存在服务器的键值对中。同时,在浏览器的Cookie也对应一个相同的随机字符串,用来再次请求的时验证
注意:Session是存储在服务器中的,Cookies是储存在浏览器本地中,而Flask的Session是基于Cookies,Session是经过加密保存在Cookies中。
4.1 Session的基本配置
因为Flask的Session是通过加密之后放在了Cookie中。有加密就有密钥用于解密,所以,用到了Flask的Sessio模块就一定要配置SECRET_KEY这个全局宏。一般将SECRET_KEY设置为24位的字符。我们可以自己设定一个随机字符串,例如:
app.config[SECRET_KEY] = XXXXXXX
我们也可以引入OS模块中,自动产生一个24位的随机字符串函数。这种方法有个不足之处,就是服务器每次启动之后这个SECRET_KEY的值是不一样的,会造成Session验证失效,用户只有重新登录。
4.2 Session的基本使用
设置Session
设置Session主要是通过session['name'] = 'value'
方法来完成,name代表的是变量名称,value代表的是变量的值
# @time:2020/11/9 16:59
获取Session的值
获取Session的值有两种方法
session['name']
: 如果内容不存在,将会报异常session.get('name')
: 如果内容不存在,将会返回None
class GetSession(views.View):
删除Session的值或清空Session所有值
删除单个Session的值,可以使用Session.pop('key')
这个方法,如果清除多个Session的值,可以使用Session.clear
方法
class DelSession(views.View):
设置Session的过期时间
如果没有指定Session的过期时间,那么默认就是浏览器关闭后自动结束,即关闭浏览器失效。session.permanent=True
在Flask下则可以将有效期延长至一个月。下面的方法可以配置具体多少天的有效期。
如果设置了Session的permanent属性为True,那么过期时间是31天。
可以通过给app.config设置PERMANENT_SESSION_LIFETIME
来更改过期时间
在实际项目开发中可能还有一种需求,就是指定Session的失效时间为3天、7天、10天等整数天数的情况,这里主要用到了一个持续久化的会话生成的时间(实质就是Session会话的有效期)PERMANENT_SESSION_LIFETIME
,作为一个datetime.timedelta
对象
app.config[PERMANENT_SESSION_LIFETIME] = timedelta(days=7)
到此这篇关于Flask框架之数据交互的实现的文章就介绍到这了,更多相关Flask 数据交互内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。