【Flask学习笔记:八】Flask 中的 cookie、session

本文是Flask学习笔记的第八部分,主要探讨了Flask中的cookie和session。介绍了cookie的基本概念,如其存储在客户端,用于跟踪用户数据。然后详细阐述了如何设置、获取和删除cookie。接着转向session,解释了它是基于cookie实现的,存储在服务器端,并需要SECRET_KEY配置。文章还展示了如何设置、获取、删除session,以及如何控制session的过期时间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录:
  【Flask学习笔记:一】开发环境部署
  【Flask学习笔记:二】Flask 入门基础知识
  【Flask学习笔记:三】Flask 中的 request、response
  【Flask学习笔记:四】Flask 应用和请求上下文
  【Flask学习笔记:五】Jinja2 模板引擎
  【Flask学习笔记:六】Flask 蓝图
  【Flask学习笔记:七】Flask - WTF 处理表单
  【Flask学习笔记:八】Flask 中的 cookie、session
  【Flask学习笔记:九】Flask-SQLAlchemy

【Flask学习笔记:八】Flask 中的 cookie、session

   Session 是存储在服务器中的, Cookies 是存储在浏览器本地中,而 Flask 的 Session 是基于 Cookies, Session 是经过加密保存在 Cookies 中。

Cookie

1.cookie的基本概念

   Cookie以文本文件的形式存储在客户端的计算机上。其目的是记住和跟踪与客户使用相关的数据,以获得更好的访问者体验和网站统计信息。单个 Cookie 数据大小一般不超过 3 KB。
   Cookie 基本的语法如下:

set_cookie(self, key, value='', max_age=None, expires=None, 
						path='/', domain=None, secure=False, httponly=False)

参数说明:

参数描述
name必需项,规定 Cookie 的名称
value必需项, 规定 Cookie 的值
max_age可选项, 规定 Cookie 持续多长时间客户端的浏览器会话
expires可选项,规定是 datetime 对象或 UNIX 时间戳
path可选项,规定 Cookie 在当前 Web 下哪些目录有效
domain可选项,规定 Cookie 作用的有效域名
secure可选项,规定是否通过安全的 HTTPS 连接来传输 Cookie
httponly可选项,设置是否允许 JavaScript 访问 cookie

2.Cookie 的基本使用

  • 设置 Cookie: 通过 Response 对象设置。
@app.route('/setcookie', methods = ['POST', 'GET'])
def setcookie():
   if request.method == 'POST':
   user = request.form['nm']
   
   resp = make_response(render_template('readcookie.html'))
   resp.set_cookie('userID', user)
   
   return resp
  • 获取 Cookie: 在 Request 中通过键获取其对应的值。
@app.route('/getcookie')
def getcookie():
   name = request.cookies.get('userID')
   return name 
  • 删除 Cookie: 通过 delete_cookie() 来完成。
@app.route('/delcookie')
def delcookie():
   resp = make_response(render_template('delcookie.html'))
   resp.delete_cookie('userID')
   return resp

Session

1.Session 的基本配置

  Session 是基于 Cookie 实现的, 保存在服务端的键值对(session[‘name’] = ‘value’)中, 同时在浏览器中的 Cookie 中也对应一相同的随机字符串,用来再次请求的时候验证。使用 Flask 的 Session 就一定要配置 SECRET_KEY 这个选项。一般将 SECRET_KEY 设置为24位的字符,也可以根据需求自定义。

配置文件中定义:

SECRET_KEY = os.urandom(24)

或在入口文件中定义:

app.config['SECRET_KEY '] = os.urandom(24)

2.Session 的基本使用

  • 设置 Session: 设置 Session 主要是通过 session[‘name’] = ‘value’ 形式设置,name 代表名称,value代表值。
@app.route('/setsession')
def setsession():
     session['username'] = 'zhangsan'  # 将userrname=zhangsan 存于 Session 中
     return 'success'
  • 获取 Session: 可以通过两种方式获取

第一种:

result = session['name'] # 如果内容不存在,会报异常

第二种:

result = session.get('name') # 如果内容不存在,将返回 None
  • 删除 Session: 使用 Session.pop(‘key’) 方法
@app.route('/delsession')
def delsession():
     session.pop('name')
     return 'del session'
  • 删除所有 Session 值: 使用 Session.clear 方法
@app.route('/clearsession')
def clearsession():
     session.clear
     return 'clear session'

3.设置 Session 的过期时间

  如果没有指定session的过期时间,那么默认是浏览器关闭后就会失效。session.permanent = True 在 Flask 下则可以将有效期延长至一个月。

有两种方式设置有效期时间:

  • 设置 session 的 permanent属性为True,那么过期时间是31天
  • 通过给 app.config 设置 PERMANENT_SESSION_LIFETIME 来更改过期时间
from flask import Flask,session
from datetime import timedelta
import os 
app = Flask(__name__)
app.config['SECRET_KEY'] = os.urandom(24) # 设置密钥
# 方法一
app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(days=7) # 配置7天有效 (可以是任意整数天数)

# 设置session
@app.route('/')
def set():
    session['username'] = 'zhangsan'
    # 方法二
    session.permanent = True # 设置过期时间为 31 天 
    return 'success'## 目标
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值