• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    해결됨

rest_framework.generics.CreateAPIView의 model 속성 유무

23.12.28 15:18 작성 조회수 95

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 설정은 없어도 동작합니다.

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