我制作了如下的Django表单:
from django.core.validators import int_list_validator
class RoomForm(forms. Form):
room_numbers = forms.CharField(validators=[int_list_validator], required=False, max_length=4000)
在这个表单中,即使我提交了像'hello'这样的字符串,表单也会被提交。我可以在views。py中获取值hello。我不明白为什么因为"int_list_validator"不应该允许。
不幸的命名:int_list_validator
不是一个验证器,而是一个创建验证器的辅助函数。
validate_comma_separated_integer_list
是一个验证器,通过调用int_list_validator
创建一个比默认的_("Enter a valid value.")
更合适的消息:
validate_comma_separated_integer_list = int_list_validator( message=_("Enter only digits separated by commas."), )
用法:
from django import forms
from django.core.validators import int_list_validator, validate_comma_separated_integer_list
# room_numbers = forms.CharField(validators=[int_list_validator], required=False, max_length=4000)
room_numbers = forms.CharField(validators=[int_list_validator()], required=False, max_length=4000)
# Or
room_numbers = forms.CharField(validators=[validate_comma_separated_integer_list], required=False, max_length=4000)