Python3.6 JsonResponse问题

2024-10-03 17:28:27 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,我最近迁移到了Python 3.6和Django 1.11,我的JsonResponse代码如下所示:

   return JsonResponse({'status': '1'}) 

它工作得很好,但在迁移之后,我开始出现以下错误:

TypeError: Object of type 'bytes' is not JSON serializable

在打印了传递给JsonResponse的数据类型之后,我意识到python3.6将其从dict改为byte。 所以我修改了密码,以确保我通过了口述

在尝试了所有这些之后,我仍然会遇到同样的错误:

^{pr2}$

印刷品:

    {'status': 0}
    <class 'dict'>
    <JsonResponse status_code=200, "application/json">

和json.dumps文件选项y会得到这个错误

AttributeError: 'str' object has no attribute 'get'

任何帮助都将不胜感激

回溯

    Traceback (most recent call last):
    File "/Users/andresvillavicencio/bancompara.mx/lib/python3.6/site-packages/django/core/handlers/base.py", line 131, in get_response
    response = middleware_method(request, response)
    File "/Users/andresvillavicencio/bancompara.mx/lib/python3.6/site-packages/django/contrib/sessions/middleware.py", line 58, in process_response
request.session.save()
    File "/Users/andresvillavicencio/bancompara.mx/lib/python3.6/site-packages/django/contrib/sessions/backends/db.py", line 81, in save
return self.create()
    File "/Users/andresvillavicencio/bancompara.mx/lib/python3.6/site-packages/django/contrib/sessions/backends/db.py", line 54, in create
self.save(must_create=True)
    File "/Users/andresvillavicencio/bancompara.mx/lib/python3.6/site-packages/django/contrib/sessions/backends/db.py", line 83, in save
obj = self.create_model_instance(data)
    File "/Users/andresvillavicencio/bancompara.mx/lib/python3.6/site-packages/django/contrib/sessions/backends/db.py", line 69, in create_model_instance
session_data=self.encode(data),
    File "/Users/andresvillavicencio/bancompara.mx/lib/python3.6/site-packages/django/contrib/sessions/backends/base.py", line 98, in encode
serialized = self.serializer().dumps(session_dict)
    File "/Users/andresvillavicencio/bancompara.mx/lib/python3.6/site-packages/django/core/signing.py", line 93, in dumps
return json.dumps(obj, separators=(',', ':')).encode('latin-1')
    File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/json/__init__.py", line 238, in dumps
**kw).encode(obj)
    File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/json/encoder.py", line 199, in encode
chunks = self.iterencode(o, _one_shot=True)
    File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/json/encoder.py", line 257, in iterencode
return _iterencode(o, 0)
    File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/json/encoder.py", line 180, in default
o.__class__.__name__)
   TypeError: Object of type 'bytes' is not JSON serializable

Tags: djangoinpyjsonlibpackageslinesite
1条回答
网友
1楼 · 发布于 2024-10-03 17:28:27

问题不是return JsonResponse({'status': '1'})。在

回溯显示当Django尝试保存Django会话时发生错误。在

您必须在视图中执行以下操作:

request.session['my_key'] = b'bytes'

对于该示例,您必须解码bytes对象(或改用字符串):

^{pr2}$

相关问题 更多 >