#python #django #validation
#python #django #проверка
Вопрос:
Мне нужно знать, какой код мне нужно вставить в мой models.py (проверки) так что, когда пользователь регистрируется для новой учетной записи, если он вводит значение в поле электронной почты, которое уже есть в базе данных, он получает сообщение об ошибке.
класс UserManager(модели.Менеджер): def user_registration_validator(self, post_data): ошибки = {} EMAIL_REGEX = re.compile(r’^[a-zA-Z0-9. -] @[a-zA-Z0-9.-] .[a-zA-Z] $’)
if len(post_data['first_name']) < 3:
errors['first_name'] = "First name must be 3 characters"
if post_data['first_name'].isalpha() == False:
errors['first_name'] = "letters only"
if len(post_data['last_name']) < 3:
errors['last_name'] = "Last name must be 3 characters"
if post_data['last_name'].isalpha() == False:
errors['last_name'] = "letters only"
if len(post_data['email']) < 8:
errors['email'] = "Email must contain 8 characters"
#if post_data['email'].Books.objects.filter(title=post_data) == True:
# errors['email'] ="this email already exist in database"
if post_data['email'].find("@") == -1:
errors['email'] = "email must contain @ and .com"
if post_data['email'].find(".com") == -1:
errors['email'] = "email must contain @ and .com"
# test whether a field matches the pattern
if not EMAIL_REGEX.match(post_data['email']):
errors['email'] = "Invalid email address!"
if post_data['password'] != post_data['confirm_password']:
errors['pass_match'] = "password must match confirm password"
if len(post_data['password']) < 8:
errors['pass_length'] = "password must be longer than 8 characters"
return errors
Комментарии:
1. Что вы пробовали до сих пор? Как выглядит ваш код?
2. если post_data[’email’]. Books.objects.filter(title= post_data) == True: #errors[’email’] =»это электронное письмо уже существует в базе данных» это то, что я устал, и это не сработало
3. пожалуйста, отредактируйте свой вопрос и добавьте туда код. Возможно, стоит добавить ВЕСЬ соответствующий код, то есть модель, представление и даже соответствующую часть шаблона.
4. docs.djangoproject.com/en/3.1/ref/models/fields/#emailfield Установите
unique
значение True. см docs.djangoproject.com/en/3.1/ref/models/fields/#unique5. Я пошел дальше и опубликовал свой код
Ответ №1:
В вашей модели добавьте поле, которое выглядит следующим образом:
user_email = models.EmailField(unique=True)
Комментарии:
1. Если это сработает для вас, пожалуйста, примите ответ.