カテゴリ: Django 更新日: 2026/04/08

Djangoフォーム入門|forms.Form と ModelForm の違いを初心者向けにやさしく解説

Djangoフォーム入門|forms.Form と ModelForm の違いを理解する
Djangoフォーム入門|forms.Form と ModelForm の違いを理解する

先生と生徒の会話形式で理解しよう

生徒

「Djangoで入力フォームを作りたいんですが、forms.Form と ModelForm って何が違うんですか?」

先生

「Djangoにはフォーム処理を簡単にする仕組みがあって、その代表が forms.Form と ModelForm なんです。」

生徒

「パソコンをあまり触ったことがなくても理解できますか?」

先生

「大丈夫です。紙の申込書に例えながら、Djangoフォームの基本から順番に説明します。」

1. Djangoのフォーム処理とは何か

1. Djangoのフォーム処理とは何か
1. Djangoのフォーム処理とは何か

Djangoのフォーム処理とは、画面に入力欄を表示し、ユーザーが入力した内容を受け取って確認する仕組みです。例えば、名前やメールアドレスを書く申込書を、パソコン画面で扱えるようにしたものがフォームです。

Djangoでは、このフォーム作成と入力チェックを自動で助けてくれる機能があります。これにより、プログラミング初心者でも安全で正確な入力画面を作れます。

2. forms.Form の基本的な考え方

2. forms.Form の基本的な考え方
2. forms.Form の基本的な考え方

forms.Form は、紙のアンケート用紙を自分で設計するイメージです。質問項目を一つずつ自分で決めて作ります。データベースと直接つながらないため、簡単なお問い合わせフォームなどに向いています。


from django import forms

class ContactForm(forms.Form):
    name = forms.CharField(label="名前")
    email = forms.EmailField(label="メールアドレス")
    message = forms.CharField(label="内容")

3. ModelForm の基本的な考え方

3. ModelForm の基本的な考え方
3. ModelForm の基本的な考え方

ModelForm は、すでにあるデータベースの設計図をそのまま申込書にするイメージです。Djangoのモデルと連動して、自動的に入力欄を作ってくれます。

「モデル」とは、データを保存する箱の設計図のことです。名前や年齢など、何を保存するかを決めたものです。


from django import forms
from .models import UserProfile

class UserProfileForm(forms.ModelForm):
    class Meta:
        model = UserProfile
        fields = ["name", "age"]

4. forms.Form と ModelForm の違い

4. forms.Form と ModelForm の違い
4. forms.Form と ModelForm の違い

forms.Form は自由に書けるノート、ModelForm は決まった書式の申請書のような違いがあります。データベースを使わない場合は forms.Form、保存したい場合は ModelForm が便利です。

Djangoフォームの違いを理解することで、どの場面でどちらを使うべきか判断できるようになります。

5. ビューでのフォーム処理の流れ

5. ビューでのフォーム処理の流れ
5. ビューでのフォーム処理の流れ

ビューとは、入力を受け取って処理する担当者のような存在です。フォームを表示し、ボタンが押されたら内容を確認します。


from django.shortcuts import render
from .forms import ContactForm

def contact_view(request):
    form = ContactForm(request.POST or None)
    if form.is_valid():
        print(form.cleaned_data)
    return render(request, "contact.html", {"form": form})

6. テンプレートでフォームを表示する

6. テンプレートでフォームを表示する
6. テンプレートでフォームを表示する

テンプレートは、画面の見た目を作る場所です。Djangoフォームは、たった一行で入力欄をまとめて表示できます。


<form method="post">
    {% csrf_token %}
    {{ form.as_p }}
    <button type="submit">送信</button>
</form>

7. 初心者がつまずきやすいポイント

7. 初心者がつまずきやすいポイント
7. 初心者がつまずきやすいポイント

Djangoフォーム初心者がよく困るのは、入力チェックやエラー表示です。Djangoは自動で「正しくない入力」を教えてくれるため、難しい処理を書かなくても安心です。

forms.Form と ModelForm の役割を理解することで、Djangoのフォーム処理全体がぐっと分かりやすくなります。

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Djangoのフォーム処理とは、具体的にどのような役割を担っている機能なのですか?プログラミング初心者でも分かるように教えてください。

Djangoのフォーム処理とは、Webサイトの画面上に名前やメールアドレスなどを入力するための「入力欄」を表示し、ユーザーがその欄に書き込んでボタンを押した内容を、サーバー側で受け取って正しく確認するための仕組みのことです。例えば、紙の申込書をイメージすると分かりやすいでしょう。紙の申込書に書かれた内容を、コンピューターが扱えるデータとして正確に受け取れるように橋渡しをしてくれるのがDjangoのフォーム機能です。この機能があるおかげで、難しいプログラミングの知識が少ない初心者の方でも、安全かつ正確にユーザーからの情報を集める仕組みを構築することが可能になります。
カテゴリの一覧へ
新着記事
New1
Django
Djangoフォームでバリデーションエラーを表示する方法を完全解説|初心者向け
New2
Django
Djangoフォームの基本構造を完全解説!初心者でもわかるフィールドとバリデーションの仕組み
New3
Python
PythonのSQLAlchemy使い方入門!初心者でもわかるインストールと初期設定
New4
Django
Djangoフォーム入門|forms.Form と ModelForm の違いを初心者向けにやさしく解説
人気記事
No.1
Java&Spring記事人気No1
Python
PythonでCassandraに接続する方法を完全ガイド!cassandra-driverの使い方
No.2
Java&Spring記事人気No2
Python
PythonでRedisをキャッシュとして活用!アプリを爆速にする方法を徹底解説
No.3
Java&Spring記事人気No3
Flask
PythonのFlaskでテンプレートを多言語化!翻訳の基本構文を完全ガイド
No.4
Java&Spring記事人気No4
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.5
Java&Spring記事人気No5
Flask
PythonのFlaskで言語を自動判別!ユーザーに合わせた表示切り替えの仕組みを徹底解説
No.6
Java&Spring記事人気No6
Python
PythonでCassandraをバックアップ!データの保存と復元を初心者向けに完全ガイド
No.7
Java&Spring記事人気No7
Python
PythonでCassandraのテーブル設計をマスター!初心者のためのデータモデル講座
No.8
Java&Spring記事人気No8
Python
PythonでMySQLに接続する方法!pymysqlの基本的な使い方