revision-up-to: | 17812 (1.4) |
---|
リリースノートを参照してください
バリデータ (validator) は、一つの値を引数に取り、何らかの条件に合わなければ
ValidationError
を送出する呼び出し可能オブジェク
トです。異なる種類のフィールド間で検証処理を再利用するためにバリデータを使うこと
もできます。
たとえば、偶数だけを許可するバリデータは次のようになります:
from django.core.exceptions import ValidationError
def validate_even(value):
if value % 2 != 0:
raise ValidationError(u'%s is not an even number' % value)
これは、フィールドの validators
引数を使って、
モデルのフィールドに追加できます:
from django.db import models
class MyModel(models.Model):
even_field = models.IntegerField(validators=[validate_even])
バリデータが実行されるより前に値は Python に変換されるので、 同じバリデータをフォームに対して使うことすら可能です:
from django import forms
class MyForm(forms.Form):
even_field = forms.IntegerField(validators=[validate_even])
バリデータがフォームでどのように実行されるかについては フォームの検証 を、モデルでどのように実行されるかについては
オブジェクトの検証 を参照してください。なおモデルの
保存時にバリデータが自動的に実行されることはありませんが、
ModelForm
を使っている場合は、バリデータがフォーム中の
全フィールドにて実行されます。モデルの検証とフォームとの連携については
ModelForm のドキュメント を参照してください。
django.core.validators
モジュールにはモデルとフォームフィールドに使える
呼び出し可能なバリデータが含まれています。それらは内部的に使われるものですが、
あなたのフィールドで使うこともできます。独自の field.clean()
メソッドに
加えて、あるいは代わりに使うことも可能です。
RegexValidator
¶RegexValidator
([regex=None, message=None, code=None])¶Parameters: |
---|
regex
¶指定された value
を検索するための、正規表現文字列またはコンパイル
済み正規表現オブジェクトです。もし何もマッチしなかった場合、
message
と code
を設定した
ValidationError
を送出します。デフォルト
では、あらゆる文字列にマッチします (空文字列にもマッチします)。
message
¶検証に失敗したときに ValidationError
が
使うエラーメッセージです。デフォルトでは "Enter a valid value"
になります。
code
¶検証に失敗したときに ValidationError
が
使うエラーコードです。デフォルトでは "invalid"
になります。
URLValidator
¶URLValidator
([verify_exists=False, validator_user_agent=URL_VALIDATOR_USER_AGENT])¶値が URL に見えること、またオプションでその URL が実際に存在する (つまり 404
ステータスコードが返らない) ことを確認する RegexValidator
です。
値が URL に見えない場合はエラーコード 'invalid'
で、その URL が実際に
存在しない場合はエラーコード 'invalid_link'
で送出します。
Parameters: |
|
---|
verify_exists
¶True
に設定すると、このバリデータは URL が実際に存在するか確認
します。
validator_user_agent
¶verify_exists
が True
の場合、 Django は URL の存在を確認
するリクエストの “User-agent” としてこの値を使用します。
validate_email
¶validate_email
¶値がメールアドレスに見えることを確認する RegexValidator
のインスタ
ンスです。
validate_slug
¶validate_slug
¶値がアルファベット、数字、アンダースコア、ハイフンだけで構成されていることを
確認する RegexValidator
のインスタンスです。
validate_ipv4_address
¶validate_ipv4_address
¶値が IPv4 アドレスのように見えることを確認する 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
のインスタンスです。
MaxValueValidator
¶MaxValueValidator
(max_value)¶value
が max_value
より大きい場合にコード 'max_value'
の
ValidationError
を送出します。
MinValueValidator
¶MinValueValidator
(min_value)¶value
が min_value
より小さい場合にコード 'min_value'
の
ValidationError
を送出します。
MaxLengthValidator
¶MaxLengthValidator
(max_length)¶value
の長さが max_length
より長い場合にコード 'max_length'
の
ValidationError
を送出します。
MinLengthValidator
¶MinLengthValidator
(min_length)¶value
の長さが min_length
より短い場合にコード 'min_length'
の
ValidationError
を送出します。
Oct 26, 2017