当前位置: 首页 > news >正文

Python武器库开发-flask篇之session与cookie(二十六)

flask篇之session与cookie(二十六)

在 Flask 中,可以使用 session 来在不同请求之间存储和传递数据。Session 在客户端和服务器端之间交换,但是数据存储在服务器端。

Session 与 Cookie 的区别

session 和 cookie 都可以用来在不同请求之间存储和传递数据,但是它们有一些不同之处:

  1. 存储位置:session 是存储在服务器端的,而 cookie 是存储在客户端的。
  2. 安全性:session 比 cookie 更安全,因为数据存储在服务器端,客户端无法篡改。而
    cookie存储在客户端,如果数据没有加密或签名,那么客户端可以篡改 cookie 中的数据。
  3. 存储容量:session 可以存储更多的数据,因为数据存储在服务器端。而 cookie 的大小限制较小。

在实际开发中,应根据需求来选择 session 或 cookie。如果需要存储一些敏感数据,那么应该使用 session 来保证安全性。如果只需要存储一些简单的数据,那么可以使用 cookie 来方便地在不同请求之间传递数据。

使用Session

要在 Flask 中使用 session,需要先安装 Flask-Session 扩展。安装方法如下:

pip install flask-session

安装好后,在 Flask 中使用 session 就很简单了。首先,需要在 app 初始化中配置 session。例如:

from flask import Flask
from flask_session import Sessionapp = Flask(__name__)
app.config['SESSION_TYPE'] = 'filesystem'
app.config['SECRET_KEY'] = 'mysecretkey'
Session(app)

这个例子中,我们指定了 session 存储的类型是文件系统,也可以使用其他的存储类型(例如 redis)。SECRET_KEY 是用来签名 session 数据的密钥,所以必须设置它。

在代码中使用 session 也很简单。可以像使用字典一样来操作 session。例如:

这个例子中,我们将一个 key 为 ‘username’,value 为 ‘admin’ 的数据存储到了 session 中。

#!/usr/bin/env python3from flask import Flask
from flask import sessionapp.secret_key='kdjklfjk87384hjdhjh'@app.route('/')
def index():return 'Hello World!'@app.route('/set_session')
def set_seesion():#设置session持久化session.permanent = Truesession['username'] = 'admin'return '成功设置 session'@app.route('/get_session')
def get_session():value = session.get('username')return '成功获取seesion的值为 {}'.format(value)if __name__ == '__main__':app.run(debug=True)

然后通过 get_session 这个函数去获取我们之前存在session 中的value值

保存这些代码,接下来我们去运行这个脚本

python3 app.py

在这里插入图片描述

任意浏览器输入URL地址:http://127.0.0.1:5000/set_session ,如图成功设置我们的 seesion

在这里插入图片描述

浏览器输入URL地址:http://127.0.0.1:5000/get_session ,如图成功获得我们设置的 seesion 的value值

在这里插入图片描述

使用Cookie

在 Flask 中,可以使用 cookie 来在客户端和服务器端之间交换数据。与 session 不同的是,cookie 是存储在客户端的。使用 cookie 可以方便地在不同请求之间传递数据。

在 Flask 中使用 cookie 也很简单。可以使用 Response 对象的 set_cookie 方法来设置 cookie,例如:

#!/usr/bin/env python3
from flask import Flask, Responseapp = Flask(__name__)@app.route('/')
def index():return 'Hello World!'@app.route('/set_cookie')
def set_cookie():resp = Response('Hello, World')resp.set_cookie('username', 'admin')return respif __name__ == '__main__':app.run(debug=True)

保存这些代码,接下来我们去运行这个脚本

python3 app.py

在这里插入图片描述

浏览器输入URL地址:http://127.0.0.1:5000/set_cookie,这个例子中,我们在返回的响应中设置了一个名为 ‘username’,值为 ‘admin’ 的 cookie。

在这里插入图片描述

在 Flask 中读取 cookie 也很简单。可以使用 request 对象的 cookies 属性来获得所有的 cookies,例如:

#!/usr/bin/env python3
from flask import Flask, request, Responseapp = Flask(__name__)@app.route('/')
def index():return 'Hello World!'@app.route('/set_cookie')
def set_cookie():resp = Response('Hello, World')resp.set_cookie('username', 'admin')return resp
@app.route('/get_cookie')
def get_cookie():username = request.cookies.get('username')return f'Hello, {username}'if __name__ == '__main__':app.run(debug=True)

保存这些代码,接下来我们去运行这个脚本

python3 app.py

在这里插入图片描述

浏览器输入URL地址:http://127.0.0.1:5000/get_cookie,这个例子中,我们通过 request 对象的 cookies 属性来获取名为 ‘username’ 的 cookie,并将其值作为响应返回。

在这里插入图片描述

相关文章:

Python武器库开发-flask篇之session与cookie(二十六)

flask篇之session与cookie(二十六) 在 Flask 中,可以使用 session 来在不同请求之间存储和传递数据。Session 在客户端和服务器端之间交换,但是数据存储在服务器端。 Session 与 Cookie 的区别 session 和 cookie 都可以用来在不同请求之间存储和传递…...

深度学习YOLO安检管制物品识别与检测 - python opencv 计算机竞赛

文章目录 0 前言1 课题背景2 实现效果3 卷积神经网络4 Yolov55 模型训练6 实现效果7 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 **基于深度学习YOLO安检管制误判识别与检测 ** 该项目较为新颖,适合作为竞赛课题方向&…...

vite+react+typescript 遇到的问题

1.找不到模块“vite”。你的意思是要将 “moduleResolution” 选项设置为 “node”,还是要将别名添加到 “paths” 选项中 tsconfig.json 中 compilerOptions:{“moduleResolution”: node} 2.未知的编译器选项“allowImportingTsExtensions” 该选项用于控制是否…...

数据结构及八种常用数据结构简介

data-structure 数据结构是一种存在某种关系的元素的集合。“数据” 是指元素;“结构” 是指元素之间存在的关系,分为 “逻辑结构” 和 “物理结构(又称存储结构)”。 常用的数据结构有 数组(array)、栈&…...

阿里云配置ssl(Apache)

阿里云申请证书,有个专门的免费的申请方式与普通证书是平级的功能; 访问服务器,判断apache是不是开启ssl功能,如果没有安装就安装它 [rootcentos ~]# rpm -qa | grep mod_ssl //什么没显示说明没装 yum install mod_ssl openssl …...

阿里云linux升级新版本npm、nodejs

在阿里云服务器上编译部署NextJS工程发现 alibaba linux默认yum install npm安装的版本太低, 使用以下方式升级node、npm新版本。 1、卸载现有版本 yum remove nodejs npm -y2、安装新版本 sudo yum install https://rpm.nodesource.com/pub_21.x/nodistro/repo/nodesource-…...

如何在el-tree懒加载并且包含下级的情况下进行数据回显-02

上一篇文章如何在el-tree懒加载并且包含下级的情况下进行数据回显-01对于el-tree懒加载,包含下级的情况下,对于回显提出两种方案,第一种方案有一些难题无法解决,我们重点来说说第二种方案。 第二种方案是使用这个变量对其是否全选…...

Pytorch 网络冻结的三种方法区别:detach、requires_grad、with_no_grad

1、requires_grad requires_gradTrue # 要求计算梯度; requires_gradFalse # 不要求计算梯度;在pytorch中,tensor有一个 requires_grad参数,如果设置为True,那么它会追踪对于该张量的所有操作。在完成计算时可以通过调…...

如何定位el-tree中的树节点当父元素滚动时如何定位子元素

使用到的方法 Element 接口的 scrollIntoView() 方法会滚动元素的父容器,使被调用 scrollIntoView() 的元素对用户可见。 参数 alignToTop可选 一个布尔值: 如果为 true,元素的顶端将和其所在滚动区的可视区域的顶端对齐。相应的 scrollIntoV…...

【WiFI问题自助】解决WiFi能连上但是没有网的问题

WiFi能连上但是没有网的问题 背景:wifi能连上,但是没有网 解决 遇事不决,先重启啊!怎么重启?拔掉电源再插上!拔掉网线再插上! 直接ok了。 思考记录 今天WiFi又上不了网了,昨天报…...

论文阅读:JINA EMBEDDINGS: A Novel Set of High-Performance Sentence Embedding Models

Abstract JINA EMBEDINGS构成了一组高性能的句子嵌入模型,擅长将文本输入转换为数字表示,捕捉文本的语义。这些模型在密集检索和语义文本相似性等应用中表现出色。文章详细介绍了JINA EMBEDINGS的开发,从创建高质量的成对(pairwi…...

计数排序.

一.定义: 计数排序(Counting Sort)是一种非比较性质的排序算法,其时间复杂度为O(nk)(其中n为待排序的元素个数,k为不同值的个数)。这意味着在数据值范围不大并且离散分布的情况下,规…...

flink中配置Rockdb的重要配置项

背景 由于我们在flink中使用了状态比较大,无法完全把状态数据存放到tm的堆内存中,所以我们选择了把状态存放到rockdb上,也就是使用rockdb作为状态后端存储,本文就是简单记录下使用rockdb状态后端存储的几个重要的配置项 使用rockdb状态后端…...

代码随想录二刷 | 数组 | 有序数组的平方

代码随想录二刷 | 数组 | 有序数组的平方 题目描述题目分析 & 代码实现暴力排序双指针法 题目描述 977.有序数组的平方 给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 …...

基于单片机C51全自动洗衣机仿真设计

**单片机设计介绍, 基于单片机C51全自动洗衣机仿真设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机C51的全自动洗衣机仿真设计是一个复杂的项目,它涉及到硬件和软件的设计和实现。以下是对这…...

「Verilog学习笔记」实现3-8译码器①

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点,刷题网站用的是牛客网 分析 ① 本题要求根据38译码器的功能表实现该电路,同时要求采用基础逻辑门实现,那么就需要将功能表转换为逻辑表达式。 timescale 1ns/1nsmodule d…...

Centos(Linux)服务器安装Dotnet8 及 常见问题解决

1. 下载dotnet8 sdk 下载 .NET 8.0 SDK (v8.0.100) - Linux x64 Binaries 拿到 dotnet-sdk-8.0.100-linux-x64.tar.gz 文件 2. 把文件上传到 /usr/local/software 目录 mkdir -p /usr/local/software/dotnet8 把文件拷贝过去 mv dotnet-sdk-8.0.100-linux-x64.tar.gz /usr/loc…...

最强人工智能ChatGPT引领AIGC发展

从公众号转载,关注微信公众号掌握更多技术动态 --------------------------------------------------------------- ——AI不会淘汰所有人,但会淘汰不懂AI的人 一、最强人工智能GPT-4 Turbo 在前不久的OpenAI开发者大会,正值Chatgpt3.5发布一…...

10.Oracle的同义词与序列

oracle11g的同义词与序列 一、Oracle同义词:1、同义词的基本使用2、同义词的相关权限3、同义词的作用范围 二、Oracle序列:1、序列的基本操作2、序列的相关权限 一、Oracle同义词: 同义词是一个数据库对象的别名,它允许用户通过不…...

【周报2023-11-10】

周报2023-11-10 本周的主要工作下周工作计划 本周的主要工作 本周的主要工作就有三个 第一个是进行对我们目前的高企项目的完善情况第二个是对于高企项目的接口对接情况以及细节的把控第三个为新的小程序项目做准备工作 首先第一个高企项目的完善情况得话主要是页面上 对于原…...

测试微信模版消息推送

进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...

Leetcode 3576. Transform Array to All Equal Elements

Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到&#xf…...

从WWDC看苹果产品发展的规律

WWDC 是苹果公司一年一度面向全球开发者的盛会,其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具,对过去十年 WWDC 主题演讲内容进行了系统化分析,形成了这份…...

循环冗余码校验CRC码 算法步骤+详细实例计算

通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)&#xff0…...

【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】

1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...

浅谈不同二分算法的查找情况

二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况&#xf…...

大学生职业发展与就业创业指导教学评价

这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...

短视频矩阵系统文案创作功能开发实践,定制化开发

在短视频行业迅猛发展的当下,企业和个人创作者为了扩大影响力、提升传播效果,纷纷采用短视频矩阵运营策略,同时管理多个平台、多个账号的内容发布。然而,频繁的文案创作需求让运营者疲于应对,如何高效产出高质量文案成…...

视觉slam十四讲实践部分记录——ch2、ch3

ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...

【C++特殊工具与技术】优化内存分配(一):C++中的内存分配

目录 一、C 内存的基本概念​ 1.1 内存的物理与逻辑结构​ 1.2 C 程序的内存区域划分​ 二、栈内存分配​ 2.1 栈内存的特点​ 2.2 栈内存分配示例​ 三、堆内存分配​ 3.1 new和delete操作符​ 4.2 内存泄漏与悬空指针问题​ 4.3 new和delete的重载​ 四、智能指针…...