Django에서 ModelForm을 사용하면
Model을 기반으로 Form을 자동 생성하는 것뿐만 아니라,
입력 필드의 UI와 동작 방식까지 함께 커스터마이징할 수 있습니다.
특히 Meta 클래스의 widgets 옵션을 활용하면
placeholder, CSS 클래스, 입력 타입 등을 손쉽게 설정할 수 있어
프론트엔드와 자연스럽게 연동된 Form을 만들 수 있습니다.
이번 글에서는 ModelForm을 기반으로 Form을 생성하고,
widgets를 이용해 입력 필드를 커스터마이징하는 방법을 간단한 예제로 정리해보겠습니다.
1. ModelForm 기본 구조
아래는 Post 모델을 기반으로 Form을 생성한 예제입니다.
class PostForm(forms.ModelForm):
class Meta:
model = Post
fields = ['title', 'content']
- model: 어떤 모델을 기준으로 Form을 만들지 지정
- fields: Form에 포함할 필드만 선택
Django가 자동으로 Form 필드와 validation을 연결해줌
2. widgets로 입력 필드 UI 커스터마이징하기
Form의 입력 방식이나 스타일을 바꾸고 싶다면 Meta 클래스의 widgets 옵션을 사용합니다.
from django import forms
from .models import Post
class PostForm(forms.ModelForm):
class Meta:
# Post Model을 활용해서 Form을 만드는 Meta 클래스: Form 자동 생성
model = Post
fields = ['title', 'content']
widgets = {
'title': forms.TextInput(attrs={
'class': 'title',
'placeholder': '제목을 입력 하세요.'}),
'content': forms.Textarea(attrs={
'placeholder': '내용을 입력하세요.'})
}
widgets에서 할 수 있는 것
- HTML input 타입 지정 (TextInput, Textarea 등)
- CSS 클래스 추가
- placeholder 설정
- 프론트엔드 스타일과 자연스럽게 연동
widgets을 이용하여 Form의 스타일을 적용할 수 있다.
3. 정리하면
ModelForm은 Model을 기반으로 Form을 자동 생성해줌
Meta 클래스에서 Form의 구조를 정의
widgets로 입력 UI를 손쉽게 커스터마이징 가능
'Django 프론트& 백엔드 개발' 카테고리의 다른 글
| Django 게시글 삭제(Delete) 기능 구현 (0) | 2026.01.11 |
|---|---|
| Django 수정(View)에서 request.POST와 instance를 함께 사용하는 이유 (0) | 2026.01.11 |
| Django Form Validation 에러 출력 방법: form.as_ul vs 수동 렌더링 (0) | 2026.01.11 |
| Django Form에서 유효성 검증 (0) | 2026.01.11 |
| Django 모델에서 기본 Validator와 Custom Validator 함께 사용하기 (0) | 2026.01.11 |