Я тестировал свой вид регистрации и заметил, что если я попытаюсь зарегистрироваться, используя существующее имя пользователя alreaxy, я получу сообщение об ошибке;если я попытаюсь зарегистрироваться, используя уже существующее письмо, приложение позволит мне сделать это.
Очевидно, я не хочу, чтобы кто-то регистрировал несколько аккаунтов с одним и тем же письмом на моем сайте.Я довольно новичок в Django, и, так как я заметил, что форма проверила, если имя пользователя уже существует, я подумал, что он будет делать то же самое с полем электронной почты.
Я действительно не знаю, как перейти отчто, я должен работать на мой взгляд или на форме?И как я могу сделать это через мою БД и найти, если электронная почта уже была зарегистрирована?Я думал, что email = form.cleaned_data.get('email')
поможет, но это не так.Любая помощь приветствуется.
Вот мой взгляд:
def register(request):
if request.method == "POST":
form = NewUserForm(request.POST)
if form.is_valid():
user = form.save()
username = form.cleaned_data.get('username')
email = form.cleaned_data.get('email')
messages.success(request, f"New Account Created: {username}")
login(request, user)
messages.info(request, f"You are now logged in as {username}")
return redirect("main:homepage")
else:
for msg in form.error_messages:
messages.error(request, f"{msg}: {form.error_messages[msg]}")
form = NewUserForm
return render(request,
"main/register.html",
context={"form":form})
А вот форма:
class NewUserForm(UserCreationForm):
email = forms.EmailField(required=True)
class Meta:
model = User
fields = ("username", "email", "password1", "password2")
def save(self, commit=True):
user = super(NewUserForm, self).save(commit=False)
user.email = self.cleaned_data['email']
if commit:
user.save()
return user