code: 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)
docs: Override dispatch to call appropriate methods:
          * $query - ng_query
          * $get - ng_get
          * $save - ng_save
          * $delete and $remove - ng_delete