【发布时间】:2019-11-17 05:26:16
【问题描述】:
我正在尝试遵循 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'
我该如何解决这个问题?谢谢
【问题讨论】:
-
请显示视图。正如错误所说,看起来
data是 ReturnList 的一个实例,而不是一个字典。 -
json.dumps()会给你一个字符串。该字符串将没有“get”属性。你试过return {'cats': data}吗? -
我尝试了同样的错误。
-
@Rachel 错误发生在该行之前。
-
错误行发生错误。
标签: django django-rest-framework