代码之家  ›  专栏  ›  技术社区  ›  Jason Webb

如何使用django1.2表单验证器?

  •  4
  • Jason Webb  · 技术社区  · 14 年前

    我一直在尝试使用Django中包含的新验证器。我已经在我的字段上设置了validators参数,虽然没有出现错误,但是验证似乎不起作用。这是我的控制台会话,它复制了问题。

    Python 2.7 (r27:82525, Jul  4 2010, 09:01:59) [MSC v.1500 32 bit (Intel)] on win32 
    Type "help", "copyright", "credits" or "license" for more information. 
    (InteractiveConsole)
    >>> import django
    >>> django.VERSION
    (1, 2, 1, 'final', 0)
    >>> from django.core import validators
    >>> from django import forms
    >>> field = forms.CharField(validators=[validators.MinValueValidator(2)])
    >>> field.clean("s") 
    u's'
    

    field.clean("s") 因为字符串中只有一个字符,所以引发验证异常。我意识到这是可能的,我误解了如何使用验证程序,所以任何帮助将不胜感激。

    1 回复  |  直到 14 年前
        1
  •  6
  •   Alasdair    14 年前

    MinLengthValidator MinValueValidator .

    这个 MinValueValidator

    >>> 's' > 2
    True
    

    "s" > 2 ,未引发验证错误。

    MinValueError 带着一个 IntegerField FloatField .

    >>> field = forms.FloatField(validators=[validators.MinValueValidator(2)])
    >>> field.clean(5)
    5.0
    >>> field.clean(1.9)
    ...
    ValidationError: [u'Ensure this value is greater than or equal to 2.']
    

    要确保字符串具有一定的长度,请使用 最小长度验证器 .

    >>> field = forms.CharField(validators=[validators.MinLengthValidator(2)])
    >>> field.clean('abc')
    u'abc'
    >>> field.clean('s')
    ...
    ValidationError: [u'Ensure this value has at least 2 characters (it has 1).']