首页 > 解决方案 > Django-registration - 如何检查数据库中是否存在电子邮件

问题描述

当前在注册期间,当用户输入现有用户名和电子邮件时,系统会通知该用户名已存在于数据库中。当用户输入不同的用户名但存在电子邮件时,则在 db 中成功创建用户。所以我想验证数据库中是否存在电子邮件。出于这个原因,我创建了以下内容,但不幸的是它没有按预期工作,(如果存在相同的电子邮件,则会创建用户)。

forms.py 文件

from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.models import User
from django import forms


class SignupForm(UserCreationForm):
    email = forms.EmailField(required=True)

    class Meta:
        model = User
        fields = ['username', 'email', 'password1', 'password2']

def clean_email(self):
    # Get the email
    email = self.cleaned_data.get('email')
    if User.objects.filter(email__iexact=email).exists():
        raise forms.ValidationError("User with that email already exists")
    return email

视图.py 文件

from django.shortcuts import render
from django.contrib.messages.views import SuccessMessageMixin
from django.views import generic
from django.contrib.auth.forms import UserCreationForm
from django.urls import reverse_lazy


from .forms import SignupForm


class UserRegisterView(SuccessMessageMixin, generic.CreateView):
    form_class = SignupForm
    template_name = 'registration/register.html'
    success_url = reverse_lazy('login')
    success_message = "Hello %(username)s! Your account has been created"

感谢您的时间。

标签: django-viewsdjango-forms

解决方案


推荐阅读