django中cookie与session的使用

一、cookie

  1. cookie由服务器生成 ,存储在浏览器中的键值对数据,具有不安全性,对应敏感数据应该加密储存在服务端
  2. 每个域名的cookie相互独立
  3. 浏览器访问域名为A的url地址,会把A域名下的cookie一起传递到服务器
  4. cookie可以设置过期时间

django中设置cookie:

plain 复制代码
from django.http import HttpResponse

# 接收路由2个参数,一个key, 一个value
def SetCookie(request, key, value):
    response = HttpResponse()
    response.set_cookie(key, value, max_age=60 * 60)
    return response

注:

max_age:

复制代码
默认为None(关闭浏览器时删除Cookie)

单位秒:60*60 表示3600秒,即1小时

django中获取cookie:

plain 复制代码
from django.http import HttpResponse
# 接收路由的key进行查询返回数据
def GetCookie(request,key):
    value = request.COOKIES.get(key)
    return HttpResponse(value)

路由配置:

yaml 复制代码
from .CookieApiView import SetCookie, GetCookie

urlpatterns = [
      re_path('set_cookie/(.+)/(.+)', SetCookie, name="set_cookie"),
      re_path('get_cookie/(.+)', GetCookie, name="get_cookie"),
]

cookie测试:

设置: http://127.0.0.1:8000/set_cookie/username/name1

获取: http://127.0.0.1:8000/get_cookie/username

二、Session

  1. Ssession基于cookie
  2. Session把敏感的数据以加密的方式保存在服务器的数据库中
  3. Session也可设置过期时间

session设置:

plain 复制代码
request.session[key]=value
# 设置过期时间,默认过期时间是2周
request.seesion.set_expiry(60*60)

session获取:

plain 复制代码
value=request.seesion.get(key)

注: 如果没有这个key,返回空

清空session表中所有数据:

plain 复制代码
request.seesion.flush()

用途:

这个函数用于刷新会话,即清空会话中的数据,但保留会话ID。这通常用于确保会话数据不会累积,也不会被滥用。

注意事项:

这个方法会删除当前会话中的所有数据,但不会删除会话的cookie。这意味着会话ID会保留,但session会话数据会被清空。

清理sessionId对应数据:

plain 复制代码
request.seesion.clear()
用途:
  • 这个函数用于完全清除当前会话中的所有数据。通常在用户注销或需要重置会话时使用。
注意事项:
  • 使用 clear()方法会删除会话中的所有数据,包括用户ID、登录状态等。因此,在调用这个方法之前,请确保这是你想要的操作。

django中session配置

django中session数据存放在初始化下面这个应用时生成的数据表django_session中:

plain 复制代码
INSTALLED_APPS = [
    'django.contrib.sessions',

]

三个字段示例: seesion_key、seesion_data、expirer_date

全局模块配置

plain 复制代码
INSTALLED_APPS = [
    'django.contrib.sessions',
]

视图配置

plain 复制代码
from django.http import HttpResponse

def SetSession(request, key, value):
    request.session[key] = value
    return HttpResponse("session设置成功")

def GetSession(request,key):
    value = request.session.get(key)
    return HttpResponse(value)

# 清空sessionID数据
def ClaerSession(request):
    request.session.clear()
    return HttpResponse("session清理成功")
# 清空session表中所有数据
def FlushSession(request):
    request.session.flush()
    return HttpResponse("session表中数据清理成功")

3.路由配置

plain 复制代码
from .SessionApiView import SetSession, GetSession, ClaerSession, FlushSession

urlpatterns = [
    re_path('set_session/(.+)/(.+)', SetSession, name="set_session"),
    re_path('get_session/(.+)', GetSession, name="get_session"),
    re_path('flush_session/', FlushSession, name="flush_session"),
    re_path('clear_session/', ClaerSession, name="clear_session"),
]

测试

设置: http://127.0.0.1:8000/set_session/username/name1

获取: http://127.0.0.1:8000/get_session/username

清理sessionId对应数据: http://127.0.0.1:8000/clear_session/

清空session表中所有数据: http://127.0.0.1:8000/flush_session/

相关推荐
锋行天下6 小时前
langgraph 后端发自定义数据,前端接收方法概括
人工智能·python
benchmark_cc8 小时前
用 QuantDash 读取单只股票五档盘口:抽样、缺失值检查与复现记录
python·数据分析·pandas·量化交易·股票数据·quantdash
曲径海盗8 小时前
【Python 学习第 55 天】列表基础
python·学习笔记·编程入门
专注仿真8 小时前
知识问答模型用到的算法集详解及代码实例
python·算法·代码·大模型训练·控制算法
jyOverQ9 小时前
我写了一个 CSDN Markdown 图片助手:告别本地图片逐张上传
python·工具·csdn
刘马想放假12 小时前
CANviz 使用指南|Linux 安装、DBC 解码、实时曲线与 J1939 实战
linux·python·websocket
2601_9679873713 小时前
python判断变量名不要调用任何函数实现
python·函数·语法·判断·变量名
卷无止境13 小时前
SALib敏感性分析的python库学习笔记
后端·python
duansamve14 小时前
Python3+Flask+PostgreSQL18+Vue3项目生产环境用docker如何部署?
python·docker·flask
特立独行的猫A15 小时前
少 3 个环节、少 1 次 ABI、少 3500 行代码:cj-tauri 与 Ionic/Capacitor 的鸿蒙桥接机制对比
java·后端·python