【问题标题】:Django Python email validations no shared email between multiple usersDjango Python电子邮件验证多个用户之间没有共享电子邮件
【发布时间】:2020-11-16 02:01:57
【问题描述】:

我需要知道我需要将什么代码放入我的 models.py(验证)中,以便当用户去注册一个新帐户时,如果他们在电子邮件字段中输入了一个值,而该字段已经在数据库,他们得到一个错误。

类 UserManager(models.Manager): 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

【问题讨论】:

标签: python django validation


【解决方案1】:

在您的模型中添加如下所示的字段:

user_email = models.EmailField(unique=True)

【讨论】:

  • 如果这对你有用,请接受答案。
猜你喜欢
  • 2018-05-13
  • 1970-01-01
  • 2019-07-04
  • 1970-01-01
  • 2016-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-05
相关资源
最近更新 更多