기술블로그-Django편
📝 Django Form 기본 정리
Chansman
2025. 5. 14. 15:18
📝 Django Form 기본 정리
1️⃣ Form 생성하는 법
Django에서 Form은 사용자로부터 데이터를 입력받고 검증하는 데 사용하는 핵심 기능입니다.
✅ 기본 Form 클래스 생성 방법
from django import forms
class ContactForm(forms.Form):
name = forms.CharField(label='이름', max_length=100)
email = forms.EmailField(label='이메일')
message = forms.CharField(widget=forms.Textarea)
✅ ModelForm 생성 방법
from django.forms import ModelForm
from .models import Post
class PostForm(ModelForm):
class Meta:
model = Post
fields = ['title', 'content']
📌 ModelForm은 모델 기반의 폼을 자동으로 생성해주며, DB와의 연결이 필요할 때 주로 사용됩니다.
2️⃣ widgets (위젯 설정)
Form 필드의 입력 UI를 커스터마이징할 때 사용하는 도구입니다.
from django import forms
class LoginForm(forms.Form):
username = forms.CharField(widget=forms.TextInput(attrs={'class': 'form-control'}))
password = forms.CharField(widget=forms.PasswordInput(attrs={'class': 'form-control'}))
🔹 attrs: HTML 속성 (예: class, placeholder) 지정 가능
🔹 TextInput, PasswordInput, Textarea 등 다양한 위젯 존재
3️⃣ UserCreationForm (회원가입)
django.contrib.auth.forms에서 제공하는 기본 회원가입 폼
from django.contrib.auth.forms import UserCreationForm
class CustomUserCreationForm(UserCreationForm):
class Meta(UserCreationForm.Meta):
model = CustomUser
fields = ('username', 'email')
🧠 비밀번호 확인 필드와 기본 유효성 검사를 자동으로 포함하고 있음
4️⃣ AuthenticationForm (로그인)
기본 로그인 폼. username과 password 필드가 자동 포함됨
from django.contrib.auth.forms import AuthenticationForm
class CustomAuthenticationForm(AuthenticationForm):
def confirm_login_allowed(self, user):
if not user.is_active:
raise forms.ValidationError('비활성화된 계정입니다.')
🔒 로그인 시도 시 추가 검증이 필요할 경우 confirm_login_allowed() 오버라이딩 가능
5️⃣ is_valid() 메서드
✔️ Form 검증의 핵심
is_valid()는 사용자가 제출한 데이터를 검증하며, 폼이 올바르면 True, 문제가 있으면 False를 반환합니다.
form = ContactForm(request.POST)
if form.is_valid():
# form.cleaned_data로 접근 가능
process(form.cleaned_data)
- cleaned_data: 검증된 데이터만 포함된 딕셔너리
- form.errors: 유효성 오류 메시지 접근 가능
✅ 요약표
항목 설명
Form 생성법 | Form, ModelForm 으로 사용자 입력 받기 |
widgets | 입력 필드 UI 커스터마이징 도구 |
UserCreationForm | 사용자 등록을 위한 기본 제공 폼 (비밀번호 포함) |
AuthenticationForm | 로그인 기능을 위한 폼, 검증 메서드 포함 가능 |
is_valid() | 폼 데이터 검증 후 cleaned_data로 결과 추출 |
👉 이 내용을 바탕으로 회원가입, 로그인, 데이터 입력 폼 등을 효율적으로 구성할 수 있습니다!