我有这本字典,我需要将其传递到另一个视图,知道可能的方法是通过会话或缓存,现在当我尝试传递到会话时,它会向我抛出一个错误,即数据不是 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 的序列化器专注于序列化模型对象的可迭代对象,因此这是行不通的。
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)