查看不涉及任何Django模型的检索混合

时间:2019-04-14 17:49:31

标签: django-rest-framework

前几天,我发现自己为Django Rest Framework编写了这种视图混合:

class SerializerRetrievalMixin(object):
    """
    Mixin that just passes request query params to a serializer, validates
    and returns the response.

    Implementing classes must have a `serializer_class` attribute.
    """

    def get(self, request):
        serializer = self.serializer_class(
            data=request.query_params,
            context={'request': request},
        )
        serializer.is_valid(raise_exception=True)
        return Response(serializer.data, status=status.HTTP_200_OK)

Django Rest Framework中是否已经有类似的东西?我发现CreateAPIView在POST上可以很好地工作,但是GET是否有类似的功能? RetrieveAPIView的基础是涉及Django模型,但就我而言,则没有。

1 个答案:

答案 0 :(得分:0)

如果检查get方法代码,则会看到它调用get_object来检索要序列化的对象。因此,如果您不使用模型,则可以覆盖get对象以返回该对象,或者应序列化任何数据并将其作为响应发送。当然,在这种情况下您不能使用模型序列化程序,因为它需要模型对象。