'Handles the common operations (allowed HTTP method, authentication,
throttling, method lookup) surrounding most CRUD interactions.'

def dispatch(self, request_type, request, **kwargs):

    allowed_methods = getattr(self._meta, (u'%s_allowed_methods' % request_type), None)
    if (u'HTTP_X_HTTP_METHOD_OVERRIDE' in request.META):
        request.method = request.META[u'HTTP_X_HTTP_METHOD_OVERRIDE']
    request_method = self.method_check(request, allowed=allowed_methods)
    method = getattr(self, (u'%s_%s' % (request_method, request_type)), None)
    if (method is None):
        raise ImmediateHttpResponse(response=http.HttpNotImplemented())
    self.is_authenticated(request)
    self.throttle_check(request)
    request = convert_post_to_put(request)
    response = method(request, **kwargs)
    self.log_throttled_access(request)
    if (not isinstance(response, HttpResponse)):
        return http.HttpNoContent()
    return response
