본문 바로가기
Django

[Django] Form Field

by dio-han 2021. 12. 14.

Django Form Field

Django 폼(Form)을 작성할 때 가장 중요한 부분이 바로 데이터에 맞는 폼 필드를 작성하는 것입니다. Django는 입력 데이터에

따라 사용할 수 있는 여러 내장 폼 필드를 제공하는데, 각각의 폼 필드는 그에 맞는 입력 위젯을 기본으로 가지고 있습니다.

아래는 Django에서 제공하는 몇 가지 필드 목록과 옵션들이다.

 

필드설명옵션기본 위젯
CharField 문자열 입력을 위한 필드입니다. max_length : 최대 길이 설정 min_length : 최소 길이 설정 strip : 문자열 앞뒤 공백을 제거합니다. (기본값: True) empty_value : 비어 있는 값을 나타낼 값 (기본값: 빈 문자열) TextInput
EmailField 이메일 입력을 위한 필드입니다. CharField와 같은 옵션인자를 사용합니다. EmailInput
IntegerField 정수 입력을 위한 필드입니다. max_value : 최댓값 설정 min_value : 최솟값 설정 NumberInput
BooleanField True, False 입력을 위한 필드입니다. (기본적으로 입력을 위해 체크박스가 사용됩니다.) 체크박스가 빈 값일 경우 False로 처리됩니다. CheckboxInput
ChoiceField 주어진 값 안에서 하나를 선택할 수 있는 형식의 필드입니다. choices : 선택 항목 들의 목록 인자로 각 선택 목록은 튜플 형식을 사용합니다. 예시: options = [('1', 'male'), ('2', 'female), ('3', 'other')] Select
MultipleChoiceField 주어진 보기에서 여러개를 선택할 수 있는 형식의 필드입니다. ChoiceField와 같은 옵션인자를 사용합니다. SelectMultiple
DateField 날짜 형식을 입력 받는 필드입니다. input_formats : 날짜의 형식을 지정합니다. (https://docs.djangoproject.com/en/2.2/ref/settings/#std:setting-DATE_INPUT_FORMATS) DateInput
TimeField 시간 형식을 입력받는 필드입니다. DateField와 같은 옵션인자를 사용합니다. TimeInput
DateTimeField 날짜/시간 형식을 입력 받는 필드입니다. DateField와 같은 옵션인자를 사용합니다. DateTimeInput

아래는 필드를 정의할 때 사용할 수 있는 필드 옵션들이다.

인수설명
required 필수적으로 입력해야 하는 항목 인지를 결정합니다. 기본값은 True이며 False일 경우 비워두는 것을 허용합니다.
label 해당 필드의 label 항목에 적힐 이름을 지정합니다. 만약 지정하지 않을 경우 폼 필드를 지정한 변수명의 첫 글자를 대문자로, 밑줄(_)이 있다면 띄어쓰기로 변경하여 label 값으로 사용합니다.
label_suffix 기본적으로 label 다음 콜론(:)이 붙어서 표시되는데 이 값을 변경합니다.
initial 해당 필드에 초기값을 줄 때 사용합니다.
widget 해당 필드가 사용할 사용자 입력 UI, 즉 위젯을 지정합니다. 기본적으로 각 데이터 항목에 맞는 기본 위젯이 설정되어 있습니다.
help_text 입력에 도움이 되는 문자열을 입력 필드 밑에 표시합니다.
validators 유효성 검증을 위한 검증 목록을 리스트 형태로 작성합니다.
disabled 필드의 편집 가능 여부를 결정합니다. 기본 값은 False 이며 True일 경우 해당 필드가 보이지만 편집할 수 없습니다.
  • label
# forms.py
from django import forms

class UserForm(forms.Form):
    name = forms.CharField()
    age = forms.IntegerField(label='Your age')
<!-- html -->
<label for="id_name">Name:</label> 
<input type="text" name="name" required id="id_name">
<label for="id_age">Your age:</label>
<input type="number" name="age" required id="id_age">
  • label_suffix
# forms.py
from django import forms

class UserForm(forms.Form):
    name = forms.CharField()
    age = forms.IntegerField(label_suffix='=')
<!-- html -->
<label for="id_name">Name:</label>
<input type="text" name="name" required id="id_name">
<label for="id_age">Age=</label>
<input type="number" name="age" required id="id_age">
  • help_text
# forms.py
from django import forms

class UserForm(forms.Form):
    name = forms.CharField(help_text='한글 이름을 작성해주세요.')
    age = forms.IntegerField()
<!-- html -->
<label for="id_name">Name:</label>
<input type="text" name="name" required id="id_name">
<span class="helptext">한글 이름을 작성해주세요.</span>
<label for="id_age">Age:</label>
<input type="number" name="age" required id="id_age">


더 많은 필드 옵션이 궁금하다면 아래 공식 문서를 참고하세요. https://docs.djangoproject.com/en/2.2/ref/forms/fields/#core-field-arguments

 

'Django' 카테고리의 다른 글

[Django] Django 웹 프레임워크  (0) 2022.01.03
[Django] 웹 프로그래밍의 이해 (책 요약)  (0) 2022.01.02
[Django] CSRF 방지  (0) 2021.12.14
[Django] HTML Form  (0) 2021.12.11
[Django] Model API  (0) 2021.12.10