클래스 상속의 특성을 활용하여 모델의 확장을 가능하게 해준다.
장고에서 forms.py를 처음 접하는 것은 User 모델을 사용할 때일 것이다.
from django.contrib.auth.models import User
와 같이, 장고엔 내장 사용자 모델
에 대한 내장 클래스를 제공한다.
우리가 직접 custom 제작하지 않은 것은 항상 부족함이 있기 마련이다.
내 필요가 반영된 사용자 정의 모델
이 아닌 이상
누구에게나 만족을 줄 수 없기 때문이다.
그 한계를 극복하고자 forms.py를 사용한다.
만약, 장고에서 User를 모델을 위한 클래스 혹은 UserCreationForm 클래스를 제공하지 않았다면, users앱 내 models.py에서
(다른 앱의 모델링처럼) 작성했을 것이다.
클래스 상속
from django.contrib.auth.forms import UserCreationForm
class UserForm(UserCreationForm):
...
위와 같이 내가 직접 정의한 UserForm 클래스 우측에
장고 (내장, built-in)제공 클래스인 UserCreationForm을 입력한다.
UserForm클래스에서도 UserCreationForm클래스에서 정의한 변수 및 메소드 등을 사용(접근)할 수 있게 되었다.
이를 통해, 모델의 확장 또한 가능하게 되었다.
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.models import User
from django import forms
class UserForm(UserCreationForm):
email = forms.EmailField()
class Meta:
model = User
fields = ['username', 'email', 'password1', 'password2']