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

问题描述 投票:0回答:1

我有这本字典,我需要将其传递到另一个视图,知道可能的方法是通过会话或缓存,现在当我尝试传递到会话时,它会向我抛出一个错误,即数据不是 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)}
django django-serializer
1个回答
3
投票

你的

session_data
已经是一本字典了。由于 Django 的序列化器专注于序列化模型对象的可迭代对象,因此这是行不通的。

您可以利用 Django 的

DjangoJSONEncoder
 [Django-doc] 来序列化包含
date
datetime
time
和/或
timedelta
对象的 Python 对象。

因此您可以使用:

from django.core.serializers.json import DjangoJSONEncoder

encoder = DjangoJSONEncoder()
session_data = encoder.encode(session_data)

如果您计划返回 JSON blob 作为 HTTP 响应,您可以简单地让

JsonResponse
完成编码工作:

from django.http import JsonResponse

# …
return JsonResponse(session_data)
© www.soinside.com 2019 - 2024. All rights reserved.