【发布时间】: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
【问题讨论】:
-
到目前为止你尝试过什么?你的代码是什么样子的?
-
if post_data['email'].Books.objects.filter(title=post_data) == True: #errors['email'] ="此电子邮件已存在于数据库中" 这是我的累了,没用
-
请编辑您的问题并在此处添加代码。可能值得添加所有相关代码,即模型、视图甚至模板的相关部分。
-
我继续发布我的代码
标签: python django validation