我正在测试注册视图,我发现如果尝试使用现有的用户名进行注册,则会出现错误;如果我尝试使用现有的电子邮件进行注册,该应用程序将允许我进行注册。
很显然,我不希望有人在我的网站上用同一封电子邮件注册多个帐户。我是Django的新手,并且由于我注意到该表单检查了用户名是否已存在,因此我认为它将对电子邮件字段执行相同的操作。
我真的不知道该怎么做,我应该按自己的观点还是按照表格进行工作?我如何使其遍历数据库并查找是否已注册电子邮件?我以为$( "div.slider" ).scrollLeft( 300 );
可以解决这个问题,但事实并非如此。
任何帮助表示赞赏。
这是我的观点:
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})
答案 0 :(得分:1)
比较“用户”模型中随电子邮件地址提供的电子邮件地址。
if form.is_valid():
user = form.save()
username = form.cleaned_data.get('username')
email = form.cleaned_data.get('email')
if User.objects.filter(email__exact=email).count() == 0:
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:
return HttpResponse('This email address is already registered ')
答案 1 :(得分:0)
我认为最好的选择是对自己的用户模型进行编程,这将使您对电子邮件添加一个独特的限制,您可以查看documentation