인프런 커뮤니티 질문&답변

코해님의 프로필 이미지
코해

작성한 질문수

파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트

회원가입 API 만들기

rest_framework.generics.CreateAPIView의 model 속성 유무

해결된 질문

작성

·

159

0

안녕하세요.

rest_framework의 소스코드(https://github.com/encode/django-rest-framework/blob/0f39e0124d358b0098261f070175fa8e0359b739/rest_framework/generics.py#L188)를 보면 CreateAPIView 에는 model 속성이 없는 것으로 보입니다. 상위 클래스인 CreateModelMixin과 GenericAPIView를 살펴봐도 이러한 속성은 없는 것으로 보이는데요...

그래서 SignupView에 model 속성을 생략하고 signup을 실행해보았더니 문제가 없었습니다.

class SignupView(CreateAPIView):
    # model = get_user_model()
    serializer_class = SignupSerializer
    permission_class = [ AllowAny ]

모델 속성을 포함한 이유가 있으실까요?

답변 1

0

이진석님의 프로필 이미지
이진석
지식공유자

안녕하세요.

지적해주신 대로 살펴보니 APIView에서는 model 속성이 필요없는 것이 맞습니다. 제가 CreateView와 헷갈렸습니다. CreateView에서는 디폴트 템플릿 파일 경로 계산 등을 위해 model 지정이 필요할 수 있거든요. 습관적으로 넣어버렸네요.

APIView에서는 대개 queryset과 serializer_class 설정이 필요합니다. queryset 설정은 get_querset 호출이나 get_object 호출에서 사용되어지는 데요. CreateModelMixin에서는 get_queryset/get_object 호출없이 시리얼라이저에 의해서 유효성 검사 및 생성만 되어지니 queryset 설정은 없어도 동작합니다.

알려주셔서 감사드립니다. :-)

코해님의 프로필 이미지
코해

작성한 질문수

질문하기