我发现自己前几天为Django Rest Framework写了这个视图mixin:
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模型,但在我的情况下,没有。
如果你检查get
方法代码,你会看到它调用get_object
来检索要序列化的对象。因此,如果您不使用模型,则可以覆盖get对象以返回对象或应该序列化并作为响应发送的任何数据。当然,在这种情况下,您不能使用模型序列化程序,因为它需要模型对象。