title: Post request handling in Django Rest framework
body: <p>I am using Django Rest Framework, currently to pull some data from the backend we are using Get request, but due to URL limit going high we are planning to implement a Post request. To do this firstly the backend Django Rest API has to be made available to serve a post request.</p>
  
  <p>I am new to Django and I don't find a post or get method in the code, all i can say is we are using viewsets, I tried using "@detail_route(methods=['post'])" but this didn't work, what am I doing wrong here?<br></p>
  
  <pre><code>class XViewSet(viewsets.ViewSet):
      renderer_classes = ''
  
      def retrieve(self, request, pk=None):
          try:
              pk = int(pk)
          except ValueError:
              raise InvalidParameterError(parameter_name='id', invalid_value=pk)
  
          queryset = models.X.objects.all()
          x = get_object_or_404(queryset, pk=pk)
  
          pipelines = request.query_params.getlist('pipeline[]')
  
          callsets =
  
          callset_ids =
  
          serializer = serializers.XSerializer(x, context={'request': request})
  
          requested_samples = [z[1:] for z in request.query_params.getlist('s')]
  
          filtered_calls = []
          serialized_data = serializer.data
  
          unfiltered_calls = serialized_data.get('calls')
          if unfiltered_calls:
              for serialized_calls in unfiltered_calls:
                  if serialized_calls['callset'] in callset_ids:
                      unfiltered_calls = serialized_calls['data']
  
                      for call in unfiltered_calls:
                          if call['y'] in requested_y:
                              filtered_calls.append(call)
  
                      break
  
          serialized_data['calls'] = filtered_calls
  
          return Response(serialized_data, status=status.HTTP_200_OK)
  
      def list(self, request):
  
          qp = self.request.query_params
  
          validated_qp =
  
          # generate the query
          query_object =
          query =
  
          # execute the query
          cursor = connections['default'].cursor()
          cursor.execute(query)
  
          qs = utils.dictfetchall(cursor)
  
          # sanitize query results
          if 't' in validated_qp:
              return_data =
          else:
              for x in qs:
                  if 'calls' in x:
  
                      x['calls'] =
                  else:
                      x['calls'] = {}
  
              return_data =
  
          resp = Response(return_data, status=status.HTTP_200_OK)
  
          if validated_qp.get(''):
              resp['content-disposition'] =
  
          return resp
  </code></pre>