From f40650a82f4e1b8ebec671da834655cfb99b6d19 Mon Sep 17 00:00:00 2001 From: Dhaval Mehta <20968146+dhaval-mehta@users.noreply.github.com> Date: Tue, 30 Jun 2020 22:59:05 +0530 Subject: [PATCH] Create get_handler method --- rest_framework/views.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/rest_framework/views.py b/rest_framework/views.py index d1b5e4ed9..6f85223ff 100644 --- a/rest_framework/views.py +++ b/rest_framework/views.py @@ -479,6 +479,16 @@ class APIView(View): request.force_plaintext_errors(use_plaintext_traceback) raise exc + # Get the appropriate handler method + def get_handler(self, request): + if request.method.lower() in self.http_method_names: + handler = getattr(self, request.method.lower(), + self.http_method_not_allowed) + else: + handler = self.http_method_not_allowed + + return handler + # Note: Views are made CSRF exempt from within `as_view` as to prevent # accidental removal of this exemption in cases where `dispatch` needs to # be overridden. @@ -495,14 +505,7 @@ class APIView(View): try: self.initial(request, *args, **kwargs) - - # Get the appropriate handler method - if request.method.lower() in self.http_method_names: - handler = getattr(self, request.method.lower(), - self.http_method_not_allowed) - else: - handler = self.http_method_not_allowed - + handler = self.get_handler(request) response = handler(request, *args, **kwargs) except Exception as exc: