カテゴリ: 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
Django
Djangoバリデーション完全入門|cleanメソッドで学ぶカスタムチェックの書き方【初心者向け】
New2
Flask
FlaskとAWS S3を連携!静的ファイルを効率よく配信する初心者向け完全ガイド
New3
Python
Pythonで例外の種類ごとに処理を分ける方法を完全解説!初心者でもわかる複数except入門
New4
Python
Pythonでリストの要素を検索・取得する方法!index()やin演算子の活用法
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonとは何か?初心者向けにできること・特徴・インストール手順までやさしく解説
No.2
Java&Spring記事人気No2
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.3
Java&Spring記事人気No3
Flask
Flask-Loginでユーザー認証を完全ガイド!初心者でもわかるログイン処理の作り方
No.4
Java&Spring記事人気No4
Flask
Flaskでデータベースを使う基本!SQLAlchemyの導入方法をやさしく解説
No.5
Java&Spring記事人気No5
Python
Pythonのコーディング規約(PEP8)とは?初心者でもわかる書き方の基本ルール
No.6
Java&Spring記事人気No6
Python
Pythonで空白や不要な文字を削除する方法!strip(), rstrip(), lstrip() の使い方を初心者向けに解説
No.7
Java&Spring記事人気No7
Flask
Flaskでフロントエンドからファイルアップロードを行う基本手順【初心者向け】
No.8
Java&Spring記事人気No8
Flask
Flaskでデータベースエラーを処理する方法!初心者にもわかる例外の使い方