1. 错误说明:
在 Django 项目中,我们会用到 Session,比如:购物车项目中,就会用 Session 来保存一个商品对象。但是,当我们的 Django 版本高于等于 1.6 时(本人的是 1.8 的),使用 Session 来保存一个 Object 就会出现如下错误: XXX is not JSON serializable。
2. 错误原因:
因为自从 Django1.6 版本开始,Session 的使用就发生一些变化,使得我们在使用 Session 来保存一个 Object 时,会出现上述 JSON 序列化的错误。
3. 解决办法:
我们可以修改 settings.py 这个 Django 的配置脚本,添加 SESSION_SERIALIZER 这一配置,使得我们可以在Django 1.6 或者更高的版本中像是在 1.6 以前的版本中一样进行代码编辑工作。
settings.py:
# 解决JSON序列化问题
SESSION_SERIALIZER = 'django.contrib.sessions.serializers.PickleSerializer'
配置完毕后,就可以在 template 中使用形如 {{ request.session.product.price }} 的形式来使用 Session 中的数据了