Pythonプログラミング入門・サンプル・チュートリアル

Pythonプログラミング入門・サンプル・チュートリアル

【Pythonプログラミング入門】Djangoのフォームでカスタムのバリデーションをする

はじめに

HTMLのフォームで入力された内容のバリデーションにFormクラスが使用されます。クラス変数で定義された内容で入力有無、文字数などの単純なバリデーションをしてくれます。それ以外のアプリケーション独自のバリデーションを行いたい場合があります。そのときはFormクラスにメソッドを追加することで実現することができます。

カスタムのバリデーション

Formクラス(サブクラス)はクラス変数で定義されているバリデーションを行なった後、clean_という名前のメソッドを実行する。はクラス変数名が入る。

  • クラス変数にemail変数が定義されている場合
  • abcd@example.comまたはefgh@example.com以外は不正とする場合
from django import forms

class CustomForm(forms.Form):
    email = forms.CharField(max_length=100)

    # デフォルトのバリデーションが行われた後に下記のバリデーションが行われる
    def clean_email():
        email = clean_data['email']
        if email in ['abcd@example.com', 'efgh@example.com']:
            return email
        else:
            raise forms.ValidationError('this email is invalid')