我有一个带有命名搜索组的正则表达式验证器。像这样:
from django.core.validators import RegexValidator
my_validator = RegexValidator(r'^[a-zA-Z0-9]*/(?P<pk>[0-9]*)$')
现在,我用它来检查模式。像这样:
search = my_validator('articles/421')
search.group('pk')
最后一行返回错误:
AttributeError: 'NoneType' object has no attribute 'group'
这是为什么? RegexValidator没有普通的正则表达式,因为它没有组?
答案 0 :(得分:0)
Django RegexValidator是用于模型字段验证的可调用类。模型字段使用它来验证值。字段调用其验证程序,并检查是否未引发ValidationError
它具有regex属性,这是用惰性函数装饰器覆盖的常规regex。如果只需要正则表达式,则只需使用标准python的re。
您可以将RegexValidator列表(或类似的类/可调用对象)传递给模型字段属性 validators ,如下所示:
url_validator = RegexValidator(r'^[a-zA-Z0-9]*/(?P<pk>[0-9]*)$')
url = forms.CharField(validators=[url_validator])