- Widget을 사용하는 방법을 다 까먹어서 다시 정리하려고 쓰는 글!
1. Django의 2가지 HTML input 표현
- Form fields
forms.CharField()
같은 형태로 사용된다.
- 입력에 대한 유효성 검사 로직을 처리
- 템플릿에서 직접 사용됨
- Widgets
forms.CharField(widget=forms.Textarea)
같은 형태로 사용된다.
- HTML input 요소의 렌더링을 담당한다. ⇒ 유효성 검증과 아무런 관계가 없다!
- Widget은 반드시 form fields에 할당 된다.
2. Widget 작성해보기
- Form이든, ModelForm이든 동일한 형태로 작성한다.
# articles/forms.py
class ArticleForm(forms.ModelForm):
# 이런식으로 각각의 model 요소에 대해서 따로 작성하는 것을 권장한다.
title = forms.CharField(
label = "제목",
widget = forms.TextInput(
attrs = {
"class" : "my-title",
"placeholder" : "Enter the title",
}
),
)
class Meta:
model = Article
fields = '__all__'
- 다양한 widget 사용법은 django 공식문서를 활용하도록 한다.
https://docs.djangoproject.com/en/4.1/ref/forms/widgets/
https://ordinarycoders.com/blog/article/using-django-form-fields-and-widgets
Uploaded by N2T