『forms.py』というファイルにフォームの内容を定義していきますが、このファイルはstartappでアプリケーションを作成した時に自動生成されないので、該当のアプリケーションフォルダの配下に自分でファイル追加する必要があります。
入力フォームの定義方法
フォームの定義方法には2種類あり、モデルを参照して項目を作成する方法と、自由に項目を定義する方法でそれぞれ異なるクラスを継承して作成することになります。
モデルを参照してフォームを作成
画面に入力した項目データを1つのテーブルに保存する場合に便利なのが『django.forms.ModelForm』クラスを継承してフォームを定義する方法です。
モデルで定義した内容を参照してフォームを作成するので記述量は少なくて済みますし、最低限のバリデーションもデフォルトで実装されるので、とても便利です。
定義の仕方はこんな感じです。
from django import forms
from .models import Books
class BooksForm(forms.ModelForm):
class Meta:
model = Book
fields = ('title', 'author', 'isbn')
自由にフォームの項目を定義
入力フォームによってはモデルとは関係なく項目を定義したい場合もあります。
その場合は『django.forms.Form』クラスを継承して定義します。
form django import forms
class BooksForm(forms.Form):
title = forms.CharField(label='書名', max_length=50)
author = forms.CharField(label='著者', max_length=30)
isbn = forms.CharField(label='ISBNコード', max_length=13)
上記のCharFieldという部分が入力項目にどんなデータが入力されるのかを定義している部分になりますが、他にはこのようなものがあります。(詳細はDjangoの公式ドキュメントを参照)
- CharField:文字列
- EmailField:メールアドレス
- DateField:日付
- DateTimeField:日時
- IntegerField:数値
- ChoiceField:セレクトボックス
- FileField:ファイル選択
- ImageField:画像選択