forms.py 에 대하여

hyuckhoon.ko·2020년 6월 15일
0

What I learned in wecode

목록 보기
52/109

1. forms.py란

클래스 상속의 특성을 활용하여 모델의 확장을 가능하게 해준다.





2. forms.py는 왜 필요한가?

장고에서 forms.py를 처음 접하는 것은 User 모델을 사용할 때일 것이다.

from django.contrib.auth.models import User

와 같이, 장고엔 내장 사용자 모델에 대한 내장 클래스를 제공한다.


프로그래밍 혹은 웹 프레임워크 관점이 아닌, 바깥의 관점을 견지하며 User 모델을 한 번 바라보자.

우리가 직접 custom 제작하지 않은 것은 항상 부족함이 있기 마련이다.
내 필요가 반영된 사용자 정의 모델이 아닌 이상
누구에게나 만족을 줄 수 없기 때문이다.

그 한계를 극복하고자 forms.py를 사용한다.


만약, 장고에서 User를 모델을 위한 클래스 혹은 UserCreationForm 클래스를 제공하지 않았다면, users앱 내 models.py에서
(다른 앱의 모델링처럼) 작성했을 것이다.



3. forms.py에 필요한 사전 지식

클래스 상속

from django.contrib.auth.forms import UserCreationForm


class UserForm(UserCreationForm):

 ...

위와 같이 내가 직접 정의한 UserForm 클래스 우측에
장고 (내장, built-in)제공 클래스인 UserCreationForm을 입력한다.

UserForm클래스에서도 UserCreationForm클래스에서 정의한 변수 및 메소드 등을 사용(접근)할 수 있게 되었다.
이를 통해, 모델의 확장 또한 가능하게 되었다.



4. forms.py 예시

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']

0개의 댓글