Ссылки на поисковые группы в RegexValidator в Django - PullRequest
0 голосов
/ 08 января 2019

У меня есть валидатор регулярных выражений с именованной группой поиска. Примерно так:

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 голосов
/ 08 января 2019

Django RegexValidator - это вызываемый класс для проверки поля модели. Используется полями модели для проверки значения. Поле вызывает свои валидаторы и проверяет, не возникло ли ValidationError

Имеет свойство регулярного выражения, которое является обычным регулярным выражением, покрытым ленивым декоратором функций. Если вам нужно только регулярное выражение, просто используйте стандартный питон re.

Вы можете передать список RegexValidator (или аналогичных классов / вызываемых элементов) в свойство поля моделей validators примерно так:

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