使用本机序列化器 Django 将数据序列化为 json formate

Serialize data to json formate using native serializer Django

我有这本字典,我需要传递给另一个视图,知道可能的方法是通过 会话或缓存 ,现在当我试图传递给session 它给我一个错误,数据不是 JSON 可序列化可能是因为我在这个字典中有 DateTime 字段

  session_data = serializers.serialize('json',session_data)

上述语句错误

'str' object has no attribute '_meta'

已更新 日期有点这种格式

{'city_name': 'Srinagar', 'description': 'few clouds', 'temp': 26.74, 'feels_like': 27.07, 'max_temp': 26.74, 'min_temp': 26.74, 'sunrise': datetime.time(6, 11, 10), 'sunset': datetime.time(18, 43, 59)}

您的 session_data 已经是字典了。由于 Django 的序列化程序专注于序列化模型对象的可迭代对象,因此这将不起作用。

您可以利用 Django 的 DjangoJSONEncoder [Django-doc] 序列化 Python 个包含 datedatetimetime and/or timedelta 个对象。

因此您可以使用:

from django.core.serializers.json import <strong>DjangoJSONEncoder</strong>

encoder = <strong>DjangoJSONEncoder()</strong>
session_data = encoder<strong>.encode(</strong>session_data<strong>)</strong>

如果您打算 return 一个 JSON blob 作为 HTTP 响应,您可以简单地让 JsonResponse 完成编码工作:

from django.http import <strong>JsonResponse</strong>

# …
return <strong>JsonResponse(</strong>session_data<strong>)</strong>