Django ModelFormの使い方完全ガイド!初心者でもわかる新規登録フォーム作成
生徒
「Djangoでユーザー登録みたいな入力フォームを作りたいんですが、何から始めればいいですか?」
先生
「DjangoにはModelFormという、とても便利な仕組みがあります。これを使うと、データベースと連動したフォームを簡単に作れますよ。」
生徒
「データベースとかフォームって難しそうです……。」
先生
「大丈夫です。ノートに名前を書く感覚で理解できるよう、順番に説明していきましょう。」
1. Django ModelFormとは何かを超やさしく説明
Django ModelFormとは、Djangoのモデル(データベースの設計図)を元にして、自動で入力フォームを作ってくれる仕組みです。たとえるなら、名簿の設計図を作ると、その設計図から「名前を書く紙」を自動で用意してくれるようなものです。
Django、ModelForm、新規登録フォーム、フォーム作成、データ保存といったキーワードで検索されることが多く、Webアプリ開発では必ず通る道です。
2. 新規登録フォーム作成の全体の流れ
Django ModelFormで新規登録フォームを作る流れは、とてもシンプルです。
- モデルを作る(保存したいデータを決める)
- ModelFormを作る(入力フォームを作る)
- ビューでフォームを表示する
- 入力内容を保存する
料理で例えると、「レシピを書く → 材料を並べる → 調理する → 盛り付ける」という流れと同じです。
3. モデルを作成して保存先を決めよう
まずは、データを保存する場所を決めます。これがモデルです。モデルとは「どんなデータを保存するか」を決める設計図です。
from django.db import models
class User(models.Model):
name = models.CharField(max_length=50)
email = models.EmailField()
ここでは「名前」と「メールアドレス」を保存します。CharFieldは文字、EmailFieldはメール専用の箱だと考えてください。
4. ModelFormを使ってフォームを作成
次に、モデルを元にフォームを作ります。これがModelFormの出番です。
from django import forms
from .models import User
class UserForm(forms.ModelForm):
class Meta:
model = User
fields = ['name', 'email']
Metaとは「設定を書く場所」です。どのモデルを使うか、どの項目をフォームに出すかを指定します。
5. ビューでフォームを表示する
ビューは、画面に何を表示するかを決める場所です。ここでフォームを画面に出します。
from django.shortcuts import render
from .forms import UserForm
def user_create(request):
form = UserForm()
return render(request, 'user_form.html', {'form': form})
requestは「ブラウザからのお願い」、renderは「画面を作る係」だと思ってください。
6. HTMLテンプレートでフォームを表示
次は画面側です。HTMLでフォームを表示します。
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">登録</button>
</form>
csrf_tokenは不正アクセス防止のお守り、form.as_pはフォームを自動で並べてくれる便利機能です。
7. 入力内容を保存する処理
最後に、入力された内容をデータベースへ保存します。
def user_create(request):
if request.method == 'POST':
form = UserForm(request.POST)
if form.is_valid():
form.save()
else:
form = UserForm()
return render(request, 'user_form.html', {'form': form})
is_valid()は「入力チェック」、save()は「保存ボタン」です。これだけで新規登録が完成します。
8. Django ModelFormを使うメリット
Django ModelFormを使うと、フォーム作成・入力チェック・保存までを一気に行えます。コードが短くなり、ミスも減ります。
Django、ModelForm、フォーム処理、新規登録、初心者向け解説といった検索キーワードでも多く使われており、学んで損はありません。