Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Django rest framework request.data raises Error

I am using Django Rest Framework. Both in my view, there raises error like request instance has no attribute 'data' I tried a lot and didn't find anything. Do I have to add any middleware or something? How DRF retrieves data from request.POST and request.GET. My view is function based one.

def list(request, format=None):
    if request.method == 'POST':
        serializer = CustomerSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
like image 672
zappier Avatar asked Jun 06 '26 15:06

zappier


1 Answers

@api_view decorator missing.To get request.data in DRF, either you have to use the decorator @api_view or extend from the APIView class if you are using class-based view.

from rest_framework.decorators import api_view

@api_view
def list(request):
    if request.method == 'POST':
        serializer = CustomerSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

For class based view extend from APIView

from rest_framework.views import APIView

class List(APIView):

    def post(self, request):
        serializer = CustomerSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

documentation : DRF request

like image 97
Aneesh R S Avatar answered Jun 08 '26 04:06

Aneesh R S