CharField
CharField で指定できる引数には次のようなものがあります。
引数 |
内容 |
required |
必須項目。真偽値で指定。True なら必須項目 |
min_length, max_length |
最小文字数、最大文字数を指定。整数値で指定。 |
次の場合だと、name フィールドは、必須項目で2文字以上15文字以下という内容です。
forms.CharField(label='name', required=True, min_length=3, max_length=15)
EmailField
EmailField で指定できる引数には次のようなものがあります。
引数 |
内容 |
required |
必須項目。真偽値で指定。True なら必須項目 |
min_length, max_length |
最小文字数、最大文字数を指定。整数値で指定。 |
forms.EmailField(label='mail', required=True, min_length=3, max_length=15)
IntegerField
IntegerField で指定できる引数には次のようなものがあります。
引数 |
内容 |
required |
必須項目。真偽値で指定。True なら必須項目 |
min_value, max_value |
最小値・最大値を整数値で指定。 |
forms.IntegerField(label='age', required=True, min_value=1, max_value=100)
FloatField
FloatField は、実数を扱うことができます。
FloatField で指定できる引数には次のようなものがあります。
引数 |
内容 |
required |
必須項目。真偽値で指定。True なら必須項目 |
min_value, max_value |
最小値・最大値を整数値で指定。 |
forms.FloatField(label='age', required=True, min_value=0, max_value=10)
URLField
URLField で指定できる引数には次のようなものがあります。
引数 |
内容 |
required |
必須項目。真偽値で指定。True なら必須項目 |
min_length, max_length |
最小文字数、最大文字数を指定。整数値で指定。 |
forms.URLField(label='url', required=True, min_length=20, max_length=100)
DateField
DateField で指定できる引数には次のようなものがあります。
引数 |
内容 |
input_formats |
日付の形式を指定します。リスト形式で複数の形式を設定可能。 |
error_messages |
特定のバリデーションエラーに対してカスタムエラーメッセージを設定できます。 |
widget |
フォームフィールドのHTML表現を決定するウィジェット |
DateFieldを type=date にするには、次のようにします。
date = forms.DateField(
widget=forms.DateInput(attrs={"type":"date"}),
)
DateTimeField
DateTimeField で指定できる引数には次のようなものがあります。
引数 |
内容 |
input_formats |
日付の形式を指定します。リスト形式で複数の形式を設定可能。 |
error_messages |
特定のバリデーションエラーに対してカスタムエラーメッセージを設定できます。 |
widget |
フォームフィールドのHTML表現を決定するウィジェット |
DateFieldを type=date にするには、次のようにします。
forms.DateTimeField(
widget=forms.DateTimeInput(attrs={"type":"datetime-local"}),
)
チェックボックス
チェックボックスは、チェックなしの状態だと、未入力扱いになるため、「 required=False 」を指定しておきます。
pythonApp\env\django_app\hello\forms.py
from django import forms
class HelloForm(forms.Form):
check = forms.BooleanField(label='Checkbox', required=False)
pythonApp\env\django_app\hello\views.py
from django.shortcuts import render
from django.http import HttpResponse
from django.views.generic import TemplateView
from .forms import HelloForm
# Create your views here.
class HelloView(TemplateView):
def __init__(self):
self.params = {
'message:': 'your data:',
'form': HelloForm()
}
def get(self, request):
return render(request, 'hello/index.html', self.params)
def post(self, request):
if('check' in request.POST):
self.params['value'] = 'check:' + request.POST['check']
else:
self.params['value'] = 'Not checked...'
self.params['form'] = HelloForm(request.POST)
return render(request, 'hello/index.html', self.params)
pythonApp\env\django_app\hello\templates\hello\index.html
{% load static %}
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="{% static 'hello/css/style.css' %}">
<title>Document</title>
</head>
<body>
<h1>hello/index</h1>
<p>{{ value|safe }}</p>
<form action="{% url 'index' %}" method="post">
{% csrf_token %}
{{ form.as_ul }}
<li><input type="submit" value="click"></li>
</form>
</body>
</html>
NullBooleanField
NullBooleanField は、3択を示すプルダウンメニューを作成します。
プルダウンメニューの表示は、「 Yes 」、「 No 」、「 unknown 」の3つです。
それぞれの value 属性の値は、「 Yes = true 」、「 No = false 」、「 unknown = unknown 」

pythonApp\env\django_app\hello\forms.py
from django import forms
class HelloForm(forms.Form):
check = forms.NullBooleanField(label='check')
pythonApp\env\django_app\hello\views.py
from django.shortcuts import render
from django.http import HttpResponse
from django.views.generic import TemplateView
from .forms import HelloForm
# Create your views here.
class HelloView(TemplateView):
def __init__(self):
self.params = {
'message:': 'your data:',
'value': None,
'form': HelloForm()
}
def get(self, request):
return render(request, 'hello/index.html', self.params)
def post(self, request):
self.params['value'] = 'check:' + request.POST['check']
self.params['form'] = HelloForm(request.POST)
return render(request, 'hello/index.html', self.params)
ChoiceField
ChoiceField は、プルダウンメニューを作成します。
pythonApp\env\django_app\hello\forms.py
from django import forms
class HelloForm(forms.Form):
data = [
('one', 'item1'),
('two', 'item2'),
('three', 'item3')
]
choice = forms.ChoiceField(label='choice', choices=data)
pythonApp\env\django_app\hello\views.py
from django.shortcuts import render
from django.http import HttpResponse
from django.views.generic import TemplateView
from .forms import HelloForm
# Create your views here.
class HelloView(TemplateView):
def __init__(self):
self.params = {
'message:': 'your data:',
'value': None,
'form': HelloForm()
}
def get(self, request):
return render(request, 'hello/index.html', self.params)
def post(self, request):
self.params['value'] = 'choice:' + request.POST['choice']
self.params['form'] = HelloForm(request.POST)
return render(request, 'hello/index.html', self.params)
ラジオボタン
ラジオボタンについては、フィールドクラスがないため、ChoiceField を使って作成します。
pythonApp\env\django_app\hello\forms.py
from django import forms
class HelloForm(forms.Form):
data = [
('one', 'item1'),
('two', 'item2'),
('three', 'item3')
]
radio = forms.ChoiceField(label='radio', choices=data, widget=forms.RadioSelect())
pythonApp\env\django_app\hello\views.py
from django.shortcuts import render
from django.http import HttpResponse
from django.views.generic import TemplateView
from .forms import HelloForm
# Create your views here.
class HelloView(TemplateView):
def __init__(self):
self.params = {
'message:': 'your data:',
'value': None,
'form': HelloForm()
}
def get(self, request):
return render(request, 'hello/index.html', self.params)
def post(self, request):
self.params['value'] = 'radio:' + request.POST['radio']
self.params['form'] = HelloForm(request.POST)
return render(request, 'hello/index.html', self.params)