你如何使用django 1.2表单验证器?

时间:2010-08-24 21:53:16

标签: django django-forms validation

我一直在尝试使用现在包含在Django中的新验证器。我在我的字段上设置了验证器参数,虽然我没有收到错误,但验证似乎没有起作用。这是我的控制台会话,可以解决这个问题。

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 个答案:

答案 0 :(得分:6)

我认为你想尝试MinLengthValidator而不是MinValueValidator

MinValueValidator检查字段值是否大于或等于给定值。

>>> 's' > 2
True

"s" > 2开始,不会引发验证错误。

MinValueErrorIntegerFieldFloatField一起使用会更有意义。

>>> 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.']

要确保字符串具有一定的长度,请使用MinLengthValidator

>>> 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).']