title: django test client.put doesn't have data
body: <p>I am trying to test django view with REST framework.
  It starts like this.</p>
  
  <pre><code>class MoveViewSet(viewsets.ModelViewSet):
      serializer_class = FamilySerializer
      queryset = Family.objects.all()
      http_method_names = ['put']
  
      def update(self, request, pk=None):
          user = request.mobile_user
          ...
          family_id = request.POST.get('family_id', None)
          ...
  </code></pre>
  
  <p>in test.py I make a request like this.</p>
  
  <pre><code>data = dict(
          join_type='join',
          family_id=target_family.id,
      )
  # also tried data = { ... }
  
  header = {
          'Authorization': user.api_key,
          ...
      }
  client = Client()
  response = client.put(url, data=data, content_type='x-www-form-urlencoded', **header)
  
  ### What I've tried ###
  # response = client.put(url, data=data, **header)
  # response = self.client.put(url, data=data, **header)
  # response = client.put(url, data=data, content_type='application/json', **header)
  </code></pre>
  
  <p>but in view, request.POST.get('paramname', 'default') makes error. request.POST has empty parameter set and of course, request.PUT is None.</p>
  
  <p>I checked middleware but neither could I find params there.
  Also I've tried this in middleware's process_request.</p>
  
  <pre><code>def process_request(self, request):
      if request.method == "PUT" and request.content_type != "application/json":
          if hasattr(request, '_post'):
              del request._post
              del request._files
          try:
              request.method = "POST"
              request._load_post_and_files()
              request.method = "PUT"
          except AttributeError as e:
              request.META['REQUEST_METHOD'] = 'POST'
              request._load_post_and_files()
              request.META['REQUEST_METHOD'] = 'PUT'
  
          request.PUT = request.POST
  </code></pre>
  
  <p>It gives me this error.
  AttributeError: 'WSGIRequest' object has no attribute 'content_type'</p>
  
  <p>If I send client.post() with data, request.POST has data, but put doesn't.
  How could I test client.put() with parameters?</p>