繁体   English   中英

在Django的RegexValidator中引用搜索组

[英]Referencing search groups in Django's RegexValidator

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

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

Django RegexValidator是用于模型字段验证的可调用类。 模型字段使用它来验证值。 字段调用其验证器,并检查是否未引发ValidationError

它具有regex属性,这是用惰性函数装饰器覆盖的常规regex。 如果只需要正则表达式,则只需使用标准python的re。

您可以将RegexValidator(或类似的类/可调用对象)列表传递给模型字段属性验证器,如下所示:

url_validator = RegexValidator(r'^[a-zA-Z0-9]*/(?P<pk>[0-9]*)$')
url = forms.CharField(validators=[url_validator])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM