• Skip to main content
  • Skip to secondary menu
  • Skip to primary sidebar
  • Skip to footer

AI活用エンジニアへの道

生成AI時代のエンジニアの生き方を考えるメディア(作成途中)

  • コラム
  • 生成AI
  • プログラミング
    • Python入門
    • Flask入門
    • Django入門
  • プロフィール
Home / プログラミング / Django / Djangoの様々なFormのバリデーション(django.core.validators, clean)についてまとめました

Djangoの様々なFormのバリデーション(django.core.validators, clean)についてまとめました

1 DjangoのFormのバリデーションの使用方法
2 関連記事


DjangoのFormのバリデーションの使用方法

DjangoのFormでは、バリデーション機能を用いることができる。バリデーションとは、Formの値の型などが正しいかどうかチェックをして誤っていた場合、Form送信後の処理の実行を中止する機能のことを言う。

form.is_valid()で実行する。

django.form.Formを継承したフォームのクラス内でバリデーションを定義する。

バリデーションを設定する方法には、以下の3つの方法がある。

  1. django.core.validatorsをインポートして、パラメータの中にバリデーションを指定する。
  2. clean_という名前のメソッドをFormクラスの中に作成する
  3. バリデーション用の関数を作成して、パラメータの中で呼び出すように定義する

以下、それぞれの使い方を記述した。

  • フォームのパラメータの中に指定する方法
from django import forms
from django.core import validators # validatorのインポート

def check_for_z(value):
    if value[0].lower() != 'z':
        raise forms.ValidationError("NEEDS TO START WITH Z")

class FormName(forms.Form):
    name = forms.CharField()
    email = forms.EmailField()
    text = forms.CharField(widget=forms.Textarea)
    botcatcher = forms.CharField(required=False,
        widget=forms.HiddenInput,
        validators=[validators.MaxLengthValidator(10)])
    # validators=[validators.MaxLengthValidator(10)]として
    # botcatcherは最大の長さは10とし。10以上の値が挿入されると画面上にエラーが発生、Formを送ることができない

  • clean_メソッドで定義する
from django import forms
from django.core import validators

class FormName(forms.Form):
    name = forms.CharField()
    email = forms.EmailField()
    verify_email = forms.EmailField(label='Enter your email again')
    text = forms.CharField(widget=forms.Textarea)
    botcatcher = forms.CharField(required=False,
        widget=forms.HiddenInput,
        validators=[validators.MaxLengthValidator(0)])

    def clean_botcatcher(self):
    # clean_botcatcherとしてForm送信時にbotcatcherの値が正しいか確認
    # 例の場合、botcatcherの長さが0以上の場合はエラー
        botcatcher = self.cleaned_data['botcatcher']
        if len(botcatcher) > 0:
            raise forms.ValidationError("GOTCHA BOT")
        return botcatcher

    def clean(self):
    # clean()で関数を定義すると、Form送信時にすべてのformのパラメータをチェック
    # 例では、emailとvmailが正しい場合はエラーが発生する
        all_clean_data = super().clean()
        email = all_clean_data['email']
        vmail = all_clean_data['verify_email']
        if email != vmail: # emailとverify_emailが等しくない場合ValidationError
            raise forms.ValidationError("MAKE SURE EMAIL MATCH")

  • 関数を作成して、validatorsで指定する
from django import forms
from django.core import validators

def check_for_z(value): # バリデーション用に定義した関数
    if value[0].lower() != 'z':
        raise forms.ValidationError("NEEDS TO START WITH Z") # バリデーションエラー

class FormName(forms.Form):
    name = forms.CharField(validators=[check_for_z])
    # validators=[check_for_z]としてバリデーションにcheck_for_z関数を指定する
    # form送信時に、check_for_zが実行され、関数の引数valueにnameが渡される
    email = forms.EmailField()
    text = forms.CharField(widget=forms.Textarea)
    botcatcher = forms.CharField(required=False,
        widget=forms.HiddenInput)

関連記事

Pythonの型ヒント:コレクション型とOptional型の使い方
Pythonの型ヒント:コレクション型とOptional型の…
Python型ヒントについて、変数と関数の引数と戻り値に付与する基本的な書き方について
Python型ヒントについて、変数と関数の引数と戻り値に付与…
【まとめ】よく使うLinuxのショートカット11選
【まとめ】よく使うLinuxのショートカット11選
覚えておくべきLinuxコマンド50選
覚えておくべきLinuxコマンド50選
FlaskでFormを用いてPOSTリクエストを行い、送信された値を取得する
FlaskでFormを用いてPOSTリクエストを行い、送信さ…
Flaskでabortを用いてHTTPException例外を強制的に発生させる
Flaskでabortを用いてHTTPException例外…

Primary Sidebar

人気記事

  • 1
    ITエンジニアとしてスキルを高めるためのUdemy講…
  • 2
    PyCharm,IntelliJのおすすめプラグイン一覧
  • no image 3
    Python未経験だが、フリーランスの案件に採用さ…
  • 4
    アメリカのシリコンバレーでプログラミングを無…

特集記事

  • 1
    Cursorの使用のポイントとコツ(コード補完、イ…
  • 2
    ITエンジニアとしてスキルを高めるためのUdemy講…

目次

1 DjangoのFormのバリデーションの使用方法
2 関連記事
StartCode ロゴ
AI時代のエンジニアを最速で育てる
法人向けIT研修で即戦力を育成しています。詳しくはお問い合わせください。
▶ 詳細はこちら
Django講座
【Udemy】Django入門講座(0からDjangoを学習: Python講座つき)
受講生6500人ほどの人気講座。<strong>View, Template, Model, Cla...
詳細 ▶

Footer

利用規約