django 클래스 메소드 오류
as_view() 메소드 오류
django 클래스 메소드 오류
오류내용
1
AttributeError: type object 'CustomOAuth2CallbackView' has no attribute 'as_view'
문제코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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클래스가 문제였음
변경 전
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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
변경 후
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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
This post is licensed under CC BY 4.0 by the author.