Как я могу создать поле формы Django, содержащие только буквенно-цифровые символы
У меня есть эта модель
name = models.CharField(max_length=50, blank=True, null=True)
email = models.EmailField(max_length=50, unique=True)
Я хочу, чтобы пользователь не мог использовать любые другие символы, кроме буквенно-цифровых символов в обоих полях.
Есть ли способ?
Ответы
Ответ 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 '}))
и т.д.
Иначе вам придется обрабатывать ошибку в представлениях.
Это помогло мне попробовать этот простой метод...
Это позволит пользователям вводить только алфавиты и пробелы.