在Django的RegexValidator中引用搜索组

时间:2019-01-08 20:03:39

标签: python regex django django-validation

我有一个带有命名搜索组的正则表达式验证器。像这样:

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没有普通的正则表达式,因为它没有组?

1 个答案:

答案 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])