カテゴリ: Django 更新日: 2026/02/09

Djangoフォームでバリデーションエラーを表示する方法を完全解説|初心者向け

Djangoフォームでバリデーションエラーを表示する方法
Djangoフォームでバリデーションエラーを表示する方法

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

生徒

「Djangoでフォームを作ったんですが、入力を間違えたときにエラーをどうやって表示するのかわかりません」

先生

「Djangoのフォームには、入力内容を自動でチェックする仕組みがあって、その結果を画面に表示できます」

生徒

「自分で全部チェックする必要はないんですか?」

先生

「基本的なチェックは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="名前", max_length=20)
    age = forms.IntegerField(label="年齢")

この例では、名前は20文字まで、年齢は数字である必要があります。もし文字を年齢欄に入れると、自動的にバリデーションエラーになります。

3. ビューでバリデーションエラーを判定する

3. ビューでバリデーションエラーを判定する
3. ビューでバリデーションエラーを判定する

フォームの入力が正しいかどうかは、ビューの中で確認します。is_validメソッドを使うことで、入力チェックの結果を判定できます。


from django.shortcuts import render
from .forms import ContactForm

def contact_view(request):
    form = ContactForm(request.POST or None)

    if request.method == "POST":
        if form.is_valid():
            print("入力は正しいです")
        else:
            print("入力にエラーがあります")

    return render(request, "contact.html", {"form": form})

is_validがFalseの場合、フォームの中にエラーメッセージが保存されています。

4. テンプレートでエラーメッセージを表示する方法

4. テンプレートでエラーメッセージを表示する方法
4. テンプレートでエラーメッセージを表示する方法

実際に画面へエラーを表示するには、テンプレートでフォームのエラー情報を出力します。以下は基本的な表示方法です。


<form method="post">
    {% csrf_token %}
    {{ form.non_field_errors }}

    <div>
        {{ form.name.label_tag }}
        {{ form.name }}
        {{ form.name.errors }}
    </div>

    <div>
        {{ form.age.label_tag }}
        {{ form.age }}
        {{ form.age.errors }}
    </div>

    <button type="submit">送信</button>
</form>

errorsを表示することで、入力ミスがあった項目の下にエラーメッセージが表示されます。

5. Bootstrapを使ったエラー表示の見やすい工夫

5. Bootstrapを使ったエラー表示の見やすい工夫
5. Bootstrapを使ったエラー表示の見やすい工夫

エラーメッセージは赤文字などで表示すると、ユーザーにとって分かりやすくなります。Bootstrapのクラスを使うと簡単に装飾できます。


<div class="mb-3">
    {{ form.name.label_tag }}
    {{ form.name }}
    {% if form.name.errors %}
        <div class="text-danger">
            {{ form.name.errors }}
        </div>
    {% endif %}
</div>

このように条件分岐を使うことで、エラーがあるときだけ表示できます。

6. 独自バリデーションエラーを追加する

6. 独自バリデーションエラーを追加する
6. 独自バリデーションエラーを追加する

Djangoでは、自分でルールを追加することもできます。例えば、年齢が0未満の場合にエラーを出したいときは、cleanメソッドを使います。


class ContactForm(forms.Form):
    age = forms.IntegerField(label="年齢")

    def clean_age(self):
        age = self.cleaned_data["age"]
        if age < 0:
            raise forms.ValidationError("年齢は0以上で入力してください")
        return age

このように書くことで、条件に合わない入力を防ぎ、分かりやすいメッセージを表示できます。

7. バリデーションエラーが表示される流れを整理

7. バリデーションエラーが表示される流れを整理
7. バリデーションエラーが表示される流れを整理

Djangoフォームでエラーが表示される流れはとてもシンプルです。フォームに入力された内容を受け取り、is_validでチェックし、エラーがあればテンプレートに渡されます。

テンプレート側では、errorsを表示するだけで、自動的に適切なメッセージが画面に出ます。初心者の方は「チェックはDjangoがやってくれる」と覚えると理解しやすくなります。

カテゴリの一覧へ
新着記事
New1
Python
Pythonでセットの要素数を調べる方法(len()の使い方)を初心者向けに解説!
New2
Python
Pythonのfrozensetとは?ミュータブルなsetとの違いをわかりやすく解説
New3
Flask
FlaskでPOSTリクエストを受け取る方法!初心者でもわかるJSONデータの受け取り方
New4
Python
Pythonでセットを活用してデータをフィルタリングする方法!初心者でもわかるセットの基本と使い方
人気記事
No.1
Java&Spring記事人気No1
Flask
Flaskとは何か?初心者向けにできること・特徴・インストール手順までやさしく解説
No.2
Java&Spring記事人気No2
Python
Pythonでトランザクション処理を実装する方法を完全解説!commit・rollbackで安全なSQL操作
No.3
Java&Spring記事人気No3
Python
Pythonで仮想環境(venv)を作る方法!初心者向けに環境構築をステップ解説
No.4
Java&Spring記事人気No4
Flask
FlaskでAPIを作る基本!初心者向けに仕組みと特徴をやさしく解説
No.5
Java&Spring記事人気No5
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.6
Java&Spring記事人気No6
Flask
Flask‑RESTfulでREST APIを構築する手順まとめ!初心者向けにやさしく解説
No.7
Java&Spring記事人気No7
Python
Pythonの文字列操作完全ガイド!結合・分割・検索の基本をやさしく解説
No.8
Java&Spring記事人気No8
Flask
FlaskのSQLAlchemyでフィルタリング検索!filter, filter_byの使い方完全ガイド