Я хотел бы проверить имя пользователя при регистрации по регулярному выражению (которое в настоящее время не является регулярным выражением, см. Код ниже). Я не хочу, чтобы новый пользователь использовал имена пользователей, такие как «admin, support, staff» и т. Д. Я просто пытался написать для себя валидатор, но, к сожалению, я не работал с regex или валидацией, как это раньше, так как яЯ новичок в кодировании, может быть, кто-томожет помочь мне в этом:
models.py
class User(AbstractBaseUser):
...
user = models.CharField(verbose_name='Username', max_length=20, unique=True, validators=username_filter)
...
validators.py
из django.core.exceptions import ValidationError из django.core.validators import RegexValidator
def username_filter(value):
invalid_username_regex = RegexValidator(
regex=("admin", "staff", "supporter", "support")
),
if value in invalid_username_regex:
raise ValidationError(u'Its not possible to signup with a username like this, please try a different one')
но в настоящее время я получаю следующую ошибку:
user = models.CharField (verbose_name = 'Username', max_length = 15, unique = True, validators = username_filter)Файл "/venv/lib/python3.7/site-packages/django/db/models/fields/init.py", строка 1039, в init app |
Файл super (). init (* args, ** kwargs) "/venv/lib/python3.7/site-packages/django/db/models/fields/init. py ", строка 171, в init app |
self._validators = list (валидаторы) # Сохранять для последующей деконструкции TypeError: объект 'function' не повторяется
Я даже не знаю, действительно ли имеет смысл использовать валидатор в models.py ... может быть, гораздо эффективнее реализовать это в forms.py, так как в противном случае при этом также будет отображаться ошибка. Войдите в систему, если в систему войдет настоящий администратор ...
ОБНОВЛЕНИЕ:
Я только что удалил валидатор из models.py и переместился в forms.py следующим образом:
class RegistrationForm(UserCreationForm):
user = forms.CharField(required=True, validators=[username_filter])
но, похоже, ничего не дает
заранее спасибо