[❗️ERROR] django 클래스 메소드 as_view() 오류

sing sang song·2024년 8월 14일
0

❗️ERROR

목록 보기
7/8
post-thumbnail

오류내용

AttributeError: type object 'CustomOAuth2CallbackView' has no attribute 'as_view'

문제코드

class CustomOAuth2CallbackView(OAuth2CallbackView):
    adapter_class = GoogleOAuth2Adapter

    def get_adapter(self, request):
        return self.adapter_class(request)

    def dispatch(self, request, *args, **kwargs):
        try:
            self.adapter = self.get_adapter(request)  # adapter 인스턴스를 설정
            return super().dispatch(request, *args, **kwargs)
        except Exception as e:
            logger.error(f"OAuth2CallbackView error: {e}")
            messages.error(request, "An error occurred during authentication. Please try again.")
            return render_authentication_error(request)

코드에는 문제가 없었으나 상속받는 OAuth2CallbackView 클래스 파일을 열어보니 OAuth2CallbackView 클래스가 상속하는 OAuth2View클래스가 문제였음

변경 전

class OAuth2View(object):
    @classmethod
    def adapter_view(cls, adapter):
        def view(request, *args, **kwargs):
            self = cls()
            self.request = request
            if not isinstance(adapter, OAuth2Adapter):
                self.adapter = adapter(request)
            else:
                self.adapter = adapter
            try:
                return self.dispatch(request, *args, **kwargs)
            except ImmediateHttpResponse as e:
                return e.response

        return view

변경 후

from django.views import View

class OAuth2View(View):
    @classmethod
    def adapter_view(cls, adapter):
        def view(request, *args, **kwargs):
            self = cls()
            self.request = request
            if not isinstance(adapter, OAuth2Adapter):
                self.adapter = adapter(request)
            else:
                self.adapter = adapter
            try:
                return self.dispatch(request, *args, **kwargs)
            except ImmediateHttpResponse as e:
                return e.response

        return view
profile
세상을 선명하게

0개의 댓글