📝 Django Form 기본 정리

2025. 5. 14. 15:18·기술블로그-Django편

📝 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로 결과 추출

👉 이 내용을 바탕으로 회원가입, 로그인, 데이터 입력 폼 등을 효율적으로 구성할 수 있습니다!

'기술블로그-Django편' 카테고리의 다른 글

👤 Django 사용자 인증 시스템 완전 정리  (0) 2025.05.14
🛠️ Django ORM 완벽 가이드  (0) 2025.05.14
🔗 Django URL 설정 완벽 가이드  (0) 2025.05.14
⚙️ Django Function-Based View (FBV) 완전 이해하기  (0) 2025.05.14
🧩 Django Jinja 템플릿 완전 가이드  (0) 2025.05.14
'기술블로그-Django편' 카테고리의 다른 글
  • 👤 Django 사용자 인증 시스템 완전 정리
  • 🛠️ Django ORM 완벽 가이드
  • 🔗 Django URL 설정 완벽 가이드
  • ⚙️ Django Function-Based View (FBV) 완전 이해하기
Chansman
Chansman
안녕하세요! 코딩을 시작한 지 얼마 되지 않은 초보 개발자 찬스맨입니다. 이 블로그는 제 학습 기록을 남기고, 다양한 코딩 실습을 통해 성장하는 과정을 공유하려고 합니다. 초보자의 눈높이에 맞춘 실습과 팁, 그리고 개발하면서 겪은 어려움과 해결 과정을 솔직하게 풀어내려 합니다. 함께 성장하는 개발자 커뮤니티가 되기를 바랍니다.
  • Chansman
    찬스맨의 프로그래밍 스토리
    Chansman
  • 전체
    오늘
    어제
    • 분류 전체보기 (794) N
      • Python (32)
      • 프로젝트 (113)
      • 과제 (25)
      • Database (40)
      • 멘토링 (11)
      • 특강 (37)
      • 기술블로그 (41)
      • 기술블로그-Fastapi편 (33)
      • 기술블로그-Django편 (154) N
      • 기술블로그-Flask편 (36)
      • AI 분석 (5)
      • HTML & CSS (31)
      • JavaScript (17)
      • AWS_Cloud (21)
      • 웹스크래핑과 데이터 수집 (14)
      • Flask (42)
      • Django (77)
      • Fastapi (16)
      • 연예 (14)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    trumpmuskclash
    chinanightlife
    titaniumcase
    btsreunion
    bts
    smartphonedurability
    chatgpterror
    americaparty
    self-growth
    gpterror
    lawsuitculture
    life reflection
    basalcellcarcinoma
    livebroadcast
    hotcoffeecase
    youngprofessionals
    americanlaw
    newpoliticalparty
    btsdischarge
    btsjungkook
    뷔
    remittance
    classaction
    college reunions
    RM
    global politics
    urbantrends
    travel ban
    homebartrend
    btscomeback
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
📝 Django Form 기본 정리
상단으로

티스토리툴바