'Override dispatch to call appropriate methods:
* $query - ng_query
* $get - ng_get
* $save - ng_save
* $delete and $remove - ng_delete'

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

    allowed_methods = self.get_allowed_methods()
    try:
        if ((request.method == 'GET') and ('GET' in allowed_methods)):
            if (('pk' in request.GET) or (self.slug_field in request.GET)):
                return self.ng_get(request, *args, **kwargs)
            return self.ng_query(request, *args, **kwargs)
        elif ((request.method == 'POST') and ('POST' in allowed_methods)):
            return self.ng_save(request, *args, **kwargs)
        elif ((request.method == 'DELETE') and ('DELETE' in allowed_methods)):
            return self.ng_delete(request, *args, **kwargs)
    except self.model.DoesNotExist as e:
        return self.error_json_response(e.args[0], 404)
    except NgMissingParameterError as e:
        return self.error_json_response(e.args[0])
    except JSONResponseException as e:
        return self.error_json_response(e.args[0], e.status_code)
    except ValidationError as e:
        if hasattr(e, 'error_dict'):
            return self.error_json_response('Form    not    valid', detail=e.message_dict)
        else:
            return self.error_json_response(e.message)
    return self.error_json_response('This    view    can    not    handle    method    {0}'.format(request.method), 405)
