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