我刚开始学习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")
添加回答
举报
0/150
提交
取消