属性错误:'list'对象没有'get'属性

4 投票
1 回答
10937 浏览
提问于 2025-04-18 13:46

当我用 format=json 查询我的API时,出现了以下错误:

AttributeError 'list' object has no attribute 'get'

有趣的是,在Django Rest Framework的API界面上并不会出现这个问题。只有在使用 format=json 时才会出现。

这是我的列表方法:

def list(self, request):
    queryset = dataset_models.DataSet.objects.all()
    serializer = serializers.DataSetListSerializer(queryset, many=True)
    return Response(serializer.data)

这是我的序列化器:

class DataSetListSerializer(serializers.ModelSerializer):
    class Meta:
        model = dataset_models.DataSet

错误追踪信息:

Traceback:
File "/usr/lib/python2.7/site-packages/Django-1.5.7.example1-py2.7.egg/django/core/handlers/base.py" in get_response
  187.                 response = middleware_method(request, response)

Exception Type: AttributeError at /api/v0/a-cb4be7e8/p/example.com/dataset/
Exception Value: 'list' object has no attribute 'get'

这是怎么回事呢?

1 个回答

3

当你使用 many=True 时,它会把多个对象转换成一种可以传输的格式,并放到一个列表里。因为 JSONResponse 类希望接收到一个字典(除非你同时传入 safe=False),所以我猜你的 Response 类也是这样要求的。

撰写回答