为了账号安全,请及时绑定邮箱和手机立即绑定

我如何检查 Django 中存在的用户名和邮件

我如何检查 Django 中存在的用户名和邮件

守着一只汪 2021-08-05 16:39:00
我刚开始学习Django。我做了一个登记表。它的工作良好。但是我无法检查此注册表中是否存在用户名和邮件。如果我尝试使用相同的用户名注册,则会收到 (1062, "Duplicate entry 'asdasd' for key 'username'") 错误。(asdasd 我的用户名..)我该如何解决这个问题?表格.pyfrom django import formsclass RegisterForm(forms.Form):    username = forms.CharField(required=True, max_length=20, label= "Kullanıcı Adı")    email = forms.EmailField(required=True, label="E-Mail")    password = forms.CharField(max_length=20, label= "Password", widget=forms.PasswordInput)    confirm = forms.CharField(max_length=20, label="RePassword",widget=forms.PasswordInput)def clean(self):    username = self.cleaned_data.get("username")    email = self.cleaned_data.get("email")    password = self.cleaned_data.get("password")    confirm = self.cleaned_data.get("confirm")    if password and confirm and password != confirm:        raise forms.ValidationError("Passwords dont match")    values = {        "username" : username,        "email" : email,        "password" : password,    }    return values视图.pyfrom django.shortcuts import render, redirectfrom .forms import RegisterFormfrom django.contrib import messagesfrom django.contrib.auth.models import Userfrom django.contrib.auth import logindef register(request):    form = RegisterForm(request.POST or None)    if form.is_valid():        username = form.cleaned_data.get("username")        email = form.cleaned_data.get("email")        password = form.cleaned_data.get("password")        newUser = User(username=username)        newUser.email = email        newUser.set_password(password)        newUser.save()        login(request, newUser)        messages.success(request,"Successful on Register")        return redirect("index")    context = {        "form": form    }    return render(request, "register.html", context)def loginUser(request):    return render(request, "login.html")def logoutUser(request):    return render(request, "logout.html")太感谢了!
查看完整描述

2 回答

?
交互式爱情

TA贡献1712条经验 获得超3个赞

最直接的方法是将方法添加到表单类中


def clean_email(self):

    if User.objects.filter(username=username).exists():

        raise forms.ValidationError("Username is not unique")


def clean_username(self):

    if User.objects.filter(email=email).exists():

        raise forms.ValidationError("Email is not unique")


查看完整回答
反对 回复 2021-08-05
  • 2 回答
  • 0 关注
  • 209 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信