Проверки электронной почты Django Python нет общей электронной почты между несколькими пользователями

#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/#unique

5. Я пошел дальше и опубликовал свой код

Ответ №1:

В вашей модели добавьте поле, которое выглядит следующим образом:

 user_email = models.EmailField(unique=True)
  

Комментарии:

1. Если это сработает для вас, пожалуйста, примите ответ.