发生了一些事情,我无法弄清楚在 DRF 视图之一中将字典转换为 json 时出现的问题
def languages(requset):
if requset.method == "GET":
langs = dict(settings.LANGUAGES)
return JsonResponse(json.dumps(langs))
该变量langs
包含一个普通的字典
{'en': 'English', 'en-uk': 'English (UK)', 'ru': 'Russian', 'nb': 'Norwegian Bokmål'}
但是当我访问这个端点时,我得到以下信息
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "C:\Python39\lib\json\__init__.py", line 231, in dumps
return _default_encoder.encode(obj)
File "C:\Python39\lib\json\encoder.py", line 199, in encode
chunks = self.iterencode(o, _one_shot=True)
File "C:\Python39\lib\json\encoder.py", line 257, in iterencode
return _iterencode(o, 0)
File "C:\Python39\lib\json\encoder.py", line 179, in default
raise TypeError(f'Object of type {o.__class__.__name__} '
TypeError: Object of type __proxy__ is not JSON serializable
从视图中可以看出,这不是一个可以简单序列化并避免此问题的模型。该数据取自整个项目的语言设置。
有谁知道如何解决它?
生成的字典值
langs
是proxy
无法序列化为JSON
.在序列化之前必须将它们转换为字符串。