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

임정민님의 프로필 이미지

작성한 질문수

작정하고 장고! Django로 Pinterest 따라만들기 : 바닥부터 배포까지

CreateView를 통한 회원가입 구현

21강 CreateView를 통한 회원가입 구현 질문

작성

·

226

·

수정됨

0

class AccountCreateView(CreateView):
    
    model = User 
    form_class = UserCreationForm 
    success_url = reverse_lazy('accountapp:hello_world') 
    template_name = 'accountapp/create.html'

 

위 부분에서 User, UserCreationForm은 왜 User(), UserCreationForm() 처럼 괄호 붙혀서 선언안하는 건가요?

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.
님의 질문에 답변드리겠습니다.

Django의 CreateView에서 modelform_class는 클래스를 참조하기 위한 것이기 때문에 괄호가 필요하지 않습니다. 괄호를 붙이면 해당 클래스의 인스턴스를 생성하게 되는데, CreateView에서는 인스턴스를 생성하는 것이 아니라 클래스 자체의 정보를 사용하여 내부적으로 폼 인스턴스를 생성하고 관리합니다. 따라서 User 클래스와 UserCreationForm 클래스를 그대로 참조하려는 용도로 사용되기 때문에 괄호 없이 선언하는 것이 맞습니다.

UserUserCreationForm을 괄호 없이 사용하는 것은 클래스를 직접 참조하며, 이는 CreateView 내부 로직에서 객체를 생성하고 관리하는 방식에 부합합니다. 예를 들어, CreateView는 주어진 form_class를 이용하여 폼의 인스턴스를 생성하고 유효성 검사를 수행한 뒤, 데이터를 저장할 때 model에서 정의된 클래스로 새로운 데이터 객체를 생성하게 됩니다.