如何通过Django的_request.session在用户会话中存取数据?

2026-05-07 11:540阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计824个文字,预计阅读时间需要4分钟。

如何通过Django的_request.session在用户会话中存取数据?

直接赋值或读取字典式键值就执行,Django 自动处理序列化、签名、存储和过期。无需手动调用 save(),除非禁用了 SESSION_SAVE_EVERY_REQUEST 且未修改 session 内容。

  • request.session['user_id'] = 123 —— 写入后下次请求就能读到
  • uid = request.session.get('user_id') —— 推荐用 get(),避免 KeyError
  • del request.session['user_id']request.session.pop('user_id', None) —— 删除要显式操作
  • 存非 JSON 序列化类型(如 datetime、自定义类)会报 PickleError,只建议存基础类型(strintdictlistbool

为什么 request.session 有时读不到刚写的数据

常见于重定向场景:写完 session 立即 redirect(),但响应还没发 cookie,浏览器下个请求就带不上新 sessionid —— Django 默认延迟写入 cookie,直到响应头真正发出。

阅读全文
标签:django

本文共计824个文字,预计阅读时间需要4分钟。

如何通过Django的_request.session在用户会话中存取数据?

直接赋值或读取字典式键值就执行,Django 自动处理序列化、签名、存储和过期。无需手动调用 save(),除非禁用了 SESSION_SAVE_EVERY_REQUEST 且未修改 session 内容。

  • request.session['user_id'] = 123 —— 写入后下次请求就能读到
  • uid = request.session.get('user_id') —— 推荐用 get(),避免 KeyError
  • del request.session['user_id']request.session.pop('user_id', None) —— 删除要显式操作
  • 存非 JSON 序列化类型(如 datetime、自定义类)会报 PickleError,只建议存基础类型(strintdictlistbool

为什么 request.session 有时读不到刚写的数据

常见于重定向场景:写完 session 立即 redirect(),但响应还没发 cookie,浏览器下个请求就带不上新 sessionid —— Django 默认延迟写入 cookie,直到响应头真正发出。

阅读全文
标签:django