python - 如何将 Django 对象存储为 session 变量(对象不是 JSON 可序列化的)?

标签 python django

我有一个简单的看法

def foo(request):
   card = Card.objects.latest(datetime)
   request.session['card']=card

对于上面的代码,我得到了错误

"<Card: Card object> is not JSON serializable"

Django 版本 1.6.2。我究竟做错了什么 ?

最佳答案

在 session 中,我只存储对象主键:

request.session['card'] = card.id

当从 session 中加载卡片时,再次获取卡片:

try:
    card = Card.objects.get(id=request.session['card'])
except (KeyError, Card.DoesNotExist):
    card = None

如果 session 中没有 card 条目或特定卡片不存在,这会将 card 设置为 None

默认情况下, session 数据为 serialised to JSON .你也可以provide your own serializer ,它知道如何存储 card.id 值或一些其他表示,并在反序列化时再次生成您的 Card 实例。

关于python - 如何将 Django 对象存储为 session 变量(对象不是 JSON 可序列化的)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22294788/

相关文章:

python - docker-py 库中的 Docker 容器等待/启动时间

python - 在 django 上从 Google Drive 上传和提供媒体文件

python - 是否有更 Pythonic/优雅的方式来扩展 Numpy 数组的维度?

python - 从 Protonmail 帐户、SMTP 库使用 Python 发送电子邮件

python - 如何动态填充前导零(在函数中)?

Python Social Auth with Django - 如何检索额外数据?

django - Django 中的空查询集

python - docker-compose 无法启动服务 : "exec:\"python3\": executable file not found

python - 导入表达式的差异?

java - 在java中读取进程的实时输出