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/

相关推荐
2501_941875287 小时前
从配置中心到动态管理的互联网工程语法演进与多语言实践分享
开发语言·python
hfywmsj7 小时前
广州餐饮铺位招租决策模型:多因子选址系统设计
开发语言·人工智能·python·广州餐饮铺位招租
泡海椒10 小时前
内置SPI函数库详解:JQuick-Java Builtin工具类实战用法
java·开发语言·python
hqyjzsb10 小时前
零 AI 项目经验,学 Python 转型 AI 的正确顺序是什么?
开发语言·人工智能·python·算法·职场和发展·数据挖掘·数据分析
sanjiaomao33311 小时前
从论文公式到Python实现:用单元测试校验滑动平均算法
python·算法·单元测试
linweidong13 小时前
中科闻歌Java面试题及参考答案
java·python·大模型·提示词·ai agent·mcp·rag原理
小玮看世界13 小时前
[Python]OD算法在OD实际运用转化参考清单
开发语言·python·算法
萧鼎13 小时前
2026实战:用 tomlkit 优雅读写 TOML 配置,告别手写解析器
python·开源·教程·python库
小刘在重生~14 小时前
Java 常用类|包装类 装箱拆箱、Integer 缓存面试题
java·python·缓存
2601_9620994614 小时前
Python xlwt设置excel单元格字体及格式
python·excel·xlwt·样式设置·单元格格式