首页 > 解决方案 > DRF JSONRenderer 'ReturnList' 对象没有属性 'get'

问题描述

我正在尝试遵循教程Django Rest Framework并使VueJS它们一起工作。虽然使用JSONRenderer render函数现在给我一个问题:

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

我的列表视图是:

from rest_framework import status
from rest_framework.generics import ListAPIView, RetrieveAPIView
from rest_framework.permissions import AllowAny
from rest_framework.response import Response
from .models import Cat
from .renderers import CatJSONRenderer
from .serializers import CatSerializer, CatListSerializer
class CatListApiView(ListAPIView):
    model = Cat
    queryset = Cat.objects.all()
    permissions_classes = (AllowAny, )
    renderer_classes = (CatJSONRenderer, )
    serializer_class = CatListSerializer

我的 renderers.py 是:

class CatJSONRenderer(JSONRenderer):
    charset = 'utf-8'
    def render(self, data, media_type=None, renderer_context=None):
        print(data)
        errors = data.get('errors', None)

        if errors is not None:
            return super(CatJSONRenderer, self).render(data)

        return json.dumps({'cats': data})

Traceback 是:

Traceback:

File "/home/ytsejam/.virtualenvs/londonyogavidya/lib/python3.7/site-packages/django/core/handlers/exception.py" in inner
  34.             response = get_response(request)

File "/home/ytsejam/.virtualenvs/londonyogavidya/lib/python3.7/site-packages/django/core/handlers/base.py" in _get_response
  156.                 response = self.process_exception_by_middleware(e, request)

File "/home/ytsejam/.virtualenvs/londonyogavidya/lib/python3.7/site-packages/django/core/handlers/base.py" in _get_response
  154.                 response = response.render()

File "/home/ytsejam/.virtualenvs/londonyogavidya/lib/python3.7/site-packages/django/template/response.py" in render
  106.             self.content = self.rendered_content

File "/home/ytsejam/.virtualenvs/londonyogavidya/lib/python3.7/site-packages/rest_framework/response.py" in rendered_content
  72.         ret = renderer.render(self.data, accepted_media_type, context)

File "/home/ytsejam/public_html/londoner/yogavidya/apps/cat/renderers.py" in render
  7.         errors = data.get('errors', None)

Exception Type: AttributeError at /api/cats/
Exception Value: 'ReturnList' object has no attribute 'get'

我怎么解决这个问题 ?谢谢

标签: djangodjango-rest-framework

解决方案


我可以通过安装来解决这个django-rest-framework-json-api.问题如果有人遇到问题,这正在转换dictJSON.


推荐阅读