如果您不需要ModelViewSet而只需要GET请求上的自定义JSON
你也可以使用APIView
,它不需要模型
class MyOwnView(APIView):
def get(self, request):
return Response({'some': 'data'})
and
urlpatterns = [
url(r'^my-own-view/$', MyOwnView.as_view()),
]
使用ModelViewSet
You've put the custom JSON into get_queryset, that's wrong. If you want to use a ModelViewSet
, this by itself should be enough:
class TestViewSet(viewsets.ModelViewSet):
queryset = Test.objects.all()
serializer_class = TestSerializer
此ModelViewSet
附带.list()
、.retrieve()
、.create()
、.update()
和.destroy()
的默认实现.这些选项可供您根据需要覆盖(自定义)
Returning custom JSON from .retrieve()
and/or .list()
in ModelViewSet
E.g. to override .retrieve()
to return custom view when retrieving a single object. We can have a look at the default implementation which looks like this:
def retrieve(self, request, *args, **kwargs):
instance = self.get_object()
serializer = self.get_serializer(instance)
return Response(serializer.data)
以返回自定义JSON为例:
class TestViewSet(viewsets.ModelViewSet):
queryset = Test.objects.all()
serializer_class = TestSerializer
def retrieve(self, request, *args, **kwargs):
return Response({'something': 'my custom JSON'})
def list(self, request, *args, **kwargs):
return Response({'something': 'my custom JSON'})