Подтвердить что ты не робот

Как я могу создать поле формы Django, содержащие только буквенно-цифровые символы

У меня есть эта модель

name = models.CharField(max_length=50, blank=True, null=True)
email = models.EmailField(max_length=50, unique=True)

Я хочу, чтобы пользователь не мог использовать любые другие символы, кроме буквенно-цифровых символов в обоих полях.

Есть ли способ?

4b9b3361

Ответ 1

Вы должны использовать validator, чтобы ограничить то, что поле принимает. RegexValidator сделал бы трюк здесь:

alphanumeric = RegexValidator(r'^[0-9a-zA-Z]*$', 'Only alphanumeric characters are allowed.')

name = models.CharField(max_length=50, blank=True, null=True, validators=[alphanumeric])
email = models.EmailField(max_length=50, unique=True, validators=[alphanumeric])

Обратите внимание, что уже существует validate_email validator, который будет проверять адреса электронной почты для вас; валидатор alphanumeric, указанный выше, не позволит использовать допустимые адреса электронной почты.

Ответ 2

Вместо RegexValidator, дайте валидацию в атрибутах форм только как...

        class StaffDetailsForm(forms.ModelForm):
             first_name = forms.CharField(required=True,widget=forms.TextInput(attrs={'class':'form-control' , 'autocomplete': 'off','pattern':'[A-Za-z ]+', 'title':'Enter Characters Only '}))

и т.д.

Иначе вам придется обрабатывать ошибку в представлениях. Это помогло мне попробовать этот простой метод... Это позволит пользователям вводить только алфавиты и пробелы.