Django 提示:Object of type ‘QuerySet‘ is not JSON serializable

绝地灬酷狼 2023-10-10 13:11 104阅读 0赞

错误信息:

  1. Traceback (most recent call last):
  2. File "C:\python3\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
  3. response = get_response(request)
  4. File "C:\python3\lib\site-packages\django\core\handlers\base.py", line 181, in _get_response
  5. response = wrapped_callback(request, *callback_args, **callback_kwargs)
  6. File "F:\python_workspace\MyDjango\userSystem\views.py", line 12, in select
  7. return response_success(message='后台响应成功', data_list=books)
  8. File "F:\python_workspace\MyDjango\userSystem\views.py", line 20, in response_success
  9. 'dataList': data_list#返回对象数组
  10. File "C:\python3\lib\json\__init__.py", line 231, in dumps
  11. return _default_encoder.encode(obj)
  12. File "C:\python3\lib\json\encoder.py", line 199, in encode
  13. chunks = self.iterencode(o, _one_shot=True)
  14. File "C:\python3\lib\json\encoder.py", line 257, in iterencode
  15. return _iterencode(o, 0)
  16. File "C:\python3\lib\json\encoder.py", line 179, in default
  17. raise TypeError(f'Object of type {o.__class__.__name__} '
  18. TypeError: Object of type QuerySet is not JSON serializable

大致意思:查询对象集合没有进行JSON 序列化

解决办法:

1:引入django 序列化类

  1. from django.core import serializers

2:将查询结果序列化,并输出

  1. return response_success(message='后台响应成功', data_list=serializers.serialize("json", books))

Python 完整代码:

  1. import json
  2. from django.shortcuts import render
  3. from userSystem.models import Book
  4. from django.http import HttpResponse
  5. from django.core import serializers
  6. # Create your views here.
  7. def select(request):
  8. books = Book.objects.all()
  9. for i in range(len(books)):
  10. print("主键:%s 值:%s" % (i + 1, books[i]))
  11. return response_success(message='后台响应成功', data_list=serializers.serialize("json", books))
  12. def response_success(message, data=None, data_list=[]):
  13. return HttpResponse(json.dumps({
  14. 'code': 200,#code由前后端配合指定
  15. 'message': message,#提示信息
  16. 'data': data,#返回单个对象
  17. 'dataList': data_list#返回对象数组
  18. }), 'application/json')

发表评论

表情:
评论列表 (有 0 条评论,104人围观)

还没有评论,来说两句吧...

相关阅读