# models.py의 필드를 자동으로 HTML 폼으로 변환
class PostForm(ModelForm):
class Meta:
model = Post
fields = ['title', 'content']
DB 모델을 기반으로 입력 폼을 자동 생성해주는 역할
질문
models.py의 필드를 자동으로 HTML 폼으로 변환 class PostForm(ModelForm): class Meta: model = Post fields = ['title', 'content'] > DB 모델을 기반으로 입력 폼을 자동 생성해주는 역할 모델폼은 장고내장 함수인건가?
답변
Django 내장 클래스입니다
어디서 가져오나요?
# Django 내장 모듈에서 import
from django import forms
class PostForm(forms.ModelForm): # Django가 제공하는 클래스 상속
class Meta:
model = Post
fields = ['title', 'content']
ModelForm이 자동으로 해주는 것
| 기능 | 설명 |
|---|---|
| 필드 자동 생성 | 모델의 필드를 자동으로 HTML <input>으로 변환 |
| 유효성 검사 | 입력값이 올바른지 자동 검증 |
| DB 저장 | .save() 한 줄로 DB에 바로 저장 |
직접 만들 때 vs ModelForm 비교
# ❌ 직접 만들 때 (길고 복잡)
<input type="text" name="title">
<input type="text" name="content">
# 유효성 검사도 직접 작성...
# DB 저장도 직접 작성...
# ✅ ModelForm 사용 (간단!)
form = PostForm() # 끝!
form.save() # DB 저장도 한 줄!
결론
Django 내장 클래스 ✅
별도 설치 불필요 ✅
from django import forms 로 바로 사용 가능 ✅
💡 Django가 반복적인 폼 작업을 자동화해주기 위해 만든 강력한 내장 기능입니다!
사용자가 폼에 데이터 입력 → DB에 새 데이터 저장
예) 게시글 작성, 회원가입
새로운 데이터를 추가하는 기능
목록에서 항목 클릭 → 해당 데이터 상세 내용 표시
예) 게시글 본문 보기
특정 데이터 하나를 자세히 조회하는 기능
기존 데이터를 불러와 폼에 표시 → 수정 후 저장
예) 게시글 편집
기존 데이터를 변경하는 기능
특정 데이터 선택 → DB에서 완전 삭제
예) 게시글 삭제
데이터를 DB에서 제거하는 기능
데이터가 많을 때 → 한 페이지에 n개씩 나눠서 표시
예) 1페이지, 2페이지, 3페이지...
많은 데이터를 나눠서 보여주는 기능
ModelForm → 입력 폼 자동 생성
Create (생성) → 데이터 추가 (INSERT)
Detail (상세) → 데이터 1개 조회 (SELECT)
Update (수정) → 데이터 변경 (UPDATE)
Delete (삭제) → 데이터 제거 (DELETE)
Pagination → 데이터 분할 표시
💡 이 6가지가 합쳐지면 브라우저 기반 CRUD 완성입니다!