バリデーター
バリデーターの作成
バリデーターは、値を取り、いくつかの基準を満たさない場合に ValidationError を発生させる呼び出し可能オブジェクトです。 バリデーターは、異なるタイプのフィールド間で検証ロジックを再利用するのに役立ちます。
たとえば、偶数のみを許可するバリデーターは次のとおりです。
これは、フィールドの validators 引数を介してモデルフィールドに追加できます。
バリデーターが実行される前に値がPythonに変換されるため、フォームで同じバリデーターを使用することもできます。
__call__()
メソッドを持つクラスを使用して、より複雑な、または構成可能なバリデーターを作成することもできます。 たとえば、 RegexValidator はこの手法を使用します。 クラスベースのバリデーターが validators モデルフィールドオプションで使用されている場合は、 deconstruct()とを追加して、移行フレームワークによってシリアル化可能であることを確認する必要があります。 __eq__()
メソッド。
バリデーターの実行方法
フォームでのバリデーターの実行方法の詳細については、フォーム検証を参照してください。モデルでの実行方法については、検証オブジェクトを参照してください。 モデルを保存するときにバリデーターは自動的に実行されないことに注意してください。ただし、 ModelForm を使用している場合は、フォームに含まれるすべてのフィールドでバリデーターが実行されます。 モデル検証がフォームとどのように相互作用するかについては、 ModelFormドキュメントを参照してください。
組み込みのバリデーター
django.core.validators モジュールには、モデルフィールドとフォームフィールドで使用するための呼び出し可能なバリデーターのコレクションが含まれています。 これらは内部で使用されますが、独自のフィールドで使用することもできます。 これらは、カスタムfield.clean()
メソッドに加えて、またはその代わりに使用できます。
RegexValidator
- class RegexValidator(regex=None, message=None, code=None, inverse_match=None, flags=0)
- パラメータ
- regex
提供されている
value
内で検索する正規表現パターン、またはコンパイル済みの正規表現。 デフォルトでは、一致するものが見つからない場合、メッセージおよびコードで ValidationError が発生します。 この標準的な動作は、 reverse_match をTrue
に設定することで元に戻すことができます。この場合、一致するがであると、 ValidationError が発生します。 デフォルトでは、任意の文字列(空の文字列を含む)に一致します。
- message
検証が失敗した場合に ValidationError によって使用されるエラーメッセージ。 デフォルトは
"Enter a valid value"
です。
- code
検証が失敗した場合に ValidationError によって使用されるエラーコード。 デフォルトは
"invalid"
です。
- inverse_match
正規表現の一致モード。 デフォルトは
False
です。
EmailValidator
- class EmailValidator(message=None, code=None, whitelist=None)
- パラメータ
- message
検証が失敗した場合に ValidationError によって使用されるエラーメッセージ。 デフォルトは
"Enter a valid email address"
です。
- code
検証が失敗した場合に ValidationError によって使用されるエラーコード。 デフォルトは
"invalid"
です。
- whitelist
許可する電子メールドメインのホワイトリスト。 デフォルトでは、正規表現(
domain_regex
属性)を使用して、@記号の後に表示されるものを検証します。 ただし、その文字列がホワイトリストに表示されている場合、この検証はバイパスされます。 指定しない場合、デフォルトのホワイトリストは['localhost']
です。 ドットを含まない他のドメインは検証に合格しないため、必要に応じてホワイトリストに登録する必要があります。
URLValidator
- class URLValidator(schemes=None, regex=None, message=None, code=None)
RegexValidator は、値がURLのように見えることを保証し、そうでない場合は
'invalid'
のエラーコードを発生させます。ループバックアドレスと予約済みIPスペースは有効と見なされます。 リテラルIPv6アドレス( RFC 3986#section-3.2.2 )とUnicodeドメインの両方がサポートされています。
親 RegexValidator クラスのオプションの引数に加えて、
URLValidator
は追加のオプションの属性を受け入れます。- schemes
検証するURL / URIスキームリスト。 指定しない場合、デフォルトのリストは
['http', 'https', 'ftp', 'ftps']
です。 参考までに、IANA Webサイトには、有効なURIスキームの完全なリストがあります。
validate_unicode_slug
- validate_unicode_slug
- 値がUnicodeの文字、数字、アンダースコア、またはハイフンのみで構成されることを保証する RegexValidator インスタンス。
validate_ipv6_address
- validate_ipv6_address
django.utils.ipv6
を使用して、IPv6アドレスの有効性を確認します。
validate_ipv46_address
- validate_ipv46_address
validate_ipv4_address
とvalidate_ipv6_address
の両方を使用して、値が有効なIPv4アドレスまたはIPv6アドレスのいずれかであることを確認します。
validate_comma_separated_integer_list
- validate_comma_separated_integer_list
- 値がコンマで区切られた整数のリストであることを保証する RegexValidator インスタンス。
int_list_validator
- int_list_validator(sep=',', message=None, code='invalid', allow_negative=False)
- 文字列が
sep
で区切られた整数で構成されていることを確認する RegexValidator インスタンスを返します。allow_negative
がTrue
の場合、負の整数を使用できます。
MaxValueValidator
- class MaxValueValidator(limit_value, message=None)
value
がlimit_value
より大きい場合、コード'max_value'
で ValidationError を発生させます。これは呼び出し可能である可能性があります。バージョン2.2で変更:
limit_value
を呼び出し可能にできるようになりました。
MinValueValidator
- class MinValueValidator(limit_value, message=None)
value
がlimit_value
より小さい場合、コード'min_value'
で ValidationError を発生させます。これは呼び出し可能である可能性があります。バージョン2.2で変更:
limit_value
を呼び出し可能にできるようになりました。
MaxLengthValidator
- class MaxLengthValidator(limit_value, message=None)
value
の長さがlimit_value
より大きい場合、コード'max_length'
で ValidationError を発生させます。これは呼び出し可能である可能性があります。バージョン2.2で変更:
limit_value
を呼び出し可能にできるようになりました。
MinLengthValidator
- class MinLengthValidator(limit_value, message=None)
value
の長さがlimit_value
未満の場合、コード'min_length'
で ValidationError を発生させます。これは呼び出し可能である可能性があります。バージョン2.2で変更:
limit_value
を呼び出し可能にできるようになりました。
DecimalValidator
- class DecimalValidator(max_digits, decimal_places)
- 次のコードで ValidationError を発生させます。
- 桁数が
max_digits
より大きい場合は'max_digits'
。 'max_decimal_places'
小数点以下の桁数がdecimal_places
より大きい場合。'max_whole_digits'
全桁数がmax_digits
とdecimal_places
の差よりも大きい場合。
- 桁数が
FileExtensionValidator
- class FileExtensionValidator(allowed_extensions, message, code)
value.name
の拡張子(value
はファイル)が見つからない場合、コード'invalid_extension'
で ValidationError を発生させますallowed_extensions
で。 拡張機能は、allowed_extensions
と大文字と小文字を区別せずに比較されます。警告
ファイルの種類を判別するために、ファイル拡張子の検証に依存しないでください。 ファイルに含まれるデータに関係なく、ファイルの名前を変更して任意の拡張子を付けることができます。
validate_image_file_extension
ProhibitNullCharactersValidator
- class ProhibitNullCharactersValidator(message=None, code=None)
str(value)
に1つ以上のヌル文字('\x00'
)が含まれている場合、 ValidationError が発生します。- message
検証が失敗した場合に ValidationError によって使用されるエラーメッセージ。 デフォルトは
"Null characters are not allowed."
です。
- code
検証が失敗した場合に ValidationError によって使用されるエラーコード。 デフォルトは
"null_characters_not_allowed"
です。