如何通过Django的_request.session在用户会话中存取数据?
- 内容介绍
- 文章标签
- 相关推荐
本文共计824个文字,预计阅读时间需要4分钟。
直接赋值或读取字典式键值就执行,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,只建议存基础类型(str、int、dict、list、bool)
为什么 request.session 有时读不到刚写的数据
常见于重定向场景:写完 session 立即 redirect(),但响应还没发 cookie,浏览器下个请求就带不上新 sessionid —— Django 默认延迟写入 cookie,直到响应头真正发出。
本文共计824个文字,预计阅读时间需要4分钟。
直接赋值或读取字典式键值就执行,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,只建议存基础类型(str、int、dict、list、bool)
为什么 request.session 有时读不到刚写的数据
常见于重定向场景:写完 session 立即 redirect(),但响应还没发 cookie,浏览器下个请求就带不上新 sessionid —— Django 默认延迟写入 cookie,直到响应头真正发出。

