Djangoアプリの私のviews.pyは以下の通りです、
class MemberCreate(generics.CreateAPIView):
queryset = members.objects.all()
serializer_class = MemberSerializer
permission_classes = (permissions.IsAdminUser,)
def create(self, serializer):
''' I wanted to do some stuff with serializer.data here '''
pass
上記のcreate関数をオーバーライドすると、次のエラーで戻りが失敗します。何もせず、書き込みパスだけを実行しても失敗します。
AssertionError: Expected a `Response`, `HttpResponse` or `HttpStreamingResponse` to be returned from the view, but received a `<class 'NoneType'>`
戻り値はinstanceof
Response
です。parent
の後にstuff
クラス応答を返すことができます
def create(self, request, *args, **kwargs):
''' I wanted to do some stuff with serializer.data here '''
return super(MemberCreate, self).create(request, *args, **kwargs)
または、親の応答が必要ない場合は、Response
インスタンスを返すだけです
def create(self, request, *args, **kwargs):
''' I wanted to do some stuff with serializer.data here '''
return Response(status=204)
Response
スタックトレースで述べたように、ビューはAssertionError
オブジェクトを返す必要があります。
あなたの場合、あなたのビューとserializer.data
をテストするために空のResponse
を返すことを試みることができます
from rest_framework.response import Response
from rest_framework import status
class MemberCreate(generics.CreateAPIView):
queryset = members.objects.all()
serializer_class = MemberSerializer
permission_classes = (permissions.IsAdminUser,)
def create(self, request, *args, **kwargs):
serializer = self.serializer_class(...)
data = serializer.data
# ...
return Response(status=status.HTTP_204_NO_CONTENT)
通常、最後にserializer.validated_data
を返したいので、この行はおそらく次のようになります。
return Response(serializer.validated_data, status=status.HTTP_201_CREATED)