          for key in other.params.keys():
              if key != 'q' and other.params[key] != self.params.get(key, None):
                  return False
  
          if other.sub_type != '*' and other.sub_type != self.sub_type:
              return False
  
          if other.main_type != '*' and other.main_type != self.main_type:
              return False
  
 
</s> remove         if other.main_type != '*' and other.main_type != self.main_type:
 </s> add         if self.main_type != '*' and other.main_type != '*' and other.main_type != self.main_type: </s> remove         """Return true if this MediaType satisfies the constraint of the given MediaType."""
        for key in other.params.keys():
            if key != 'q' and other.params[key] != self.params.get(key, None):
 </s> add         """Return true if this MediaType satisfies the given MediaType."""
        for key in self.params.keys():
            if key != 'q' and other.params.get(key, None) != self.params.get(key, None): </s> remove         for accept_set in accept_sets:
            # Return any exact match
            for renderer in self.renderers:
                if renderer.media_type in accept_set:
                    return renderer

            # Return any subtype match
            for renderer in self.renderers:
                if renderer.media_type.split('/')[0] + '/*' in accept_set:
                    return renderer

            # Return default
            if '*/*' in accept_set:
                return self._default_renderer
      

 </s> add         # No acceptable renderers were found </s> remove             self.initial(request, *args, **kwargs)

            # Authenticate and check request has the relevant permissions
            self._check_permissions()

            # Get the appropriate handler method
            if self.method.lower() in self.http_method_names:
                handler = getattr(self, self.method.lower(), self.http_method_not_allowed)
            else:
                handler = self.http_method_not_allowed

            response_obj = handler(request, *args, **kwargs)

            # Allow return value to be either HttpResponse, Response, or an object, or None
            if isinstance(response_obj, HttpResponse):
                return response_obj
            elif isinstance(response_obj, Response):
                response = response_obj
            elif response_obj is not None:
                response = Response(status.HTTP_200_OK, response_obj)
            else:
                response = Response(status.HTTP_204_NO_CONTENT)

            # Pre-serialize filtering (eg filter complex objects into natively serializable types)
            response.cleaned_content = self.filter_response(response.raw_content)
 </s> add             self.request = request
            self.args = args
            self.kwargs = kwargs
        if self.sub_type != '*' and other.sub_type != '*'  and other.sub_type != self.sub_type:
          for key in other.params.keys():
              if key != 'q' and other.params[key] != self.params.get(key, None):
                  return False
  
        if self.sub_type != '*' and other.sub_type != '*'  and other.sub_type != self.sub_type:
              return False
  
          if other.main_type != '*' and other.main_type != self.main_type:
              return False
  
keep keep keep keep replace keep keep keep keep keep
 Renderers can now cope with parameterised args.  ResponseMixin gets cleaned up & added Renderer.can_handle_response(), mirroring Parsers.can_handle_request() 
djangorestframework/utils/mediatypes.py