Ayt*_*tek 2 python email django python-3.x
我刚刚开始学习Django。我做了一个登记表。它运作良好。但我无法检查此注册表中是否存在用户名和邮件。如果我尝试使用相同的用户名进行注册,则会收到(1062,“密钥\'用户名\'的重复条目\'asdasd\'”)错误。(asdasd 我的用户名..)
\n\n我该如何解决这个问题?
\n\n表格.py
\n\nfrom django import forms\nclass RegisterForm(forms.Form):\n username = forms.CharField(required=True, max_length=20, label= "Kullan\xc4\xb1c\xc4\xb1 Ad\xc4\xb1")\n email = forms.EmailField(required=True, label="E-Mail")\n password = forms.CharField(max_length=20, label= "Password", widget=forms.PasswordInput)\n confirm = forms.CharField(max_length=20, label="RePassword",widget=forms.PasswordInput)\ndef clean(self):\n username = self.cleaned_data.get("username")\n email = self.cleaned_data.get("email")\n password = self.cleaned_data.get("password")\n confirm = self.cleaned_data.get("confirm")\n\n\n if password and confirm and password != confirm:\n raise forms.ValidationError("Passwords dont match")\n\n values = {\n "username" : username,\n "email" : email,\n "password" : password,\n }\n return values\nRun Code Online (Sandbox Code Playgroud)\n\n视图.py
\n\nfrom django.shortcuts import render, redirect\nfrom .forms import RegisterForm\nfrom django.contrib import messages\nfrom django.contrib.auth.models import User\nfrom django.contrib.auth import login\n\n\ndef register(request):\n\n form = RegisterForm(request.POST or None)\n\n if form.is_valid():\n username = form.cleaned_data.get("username")\n email = form.cleaned_data.get("email")\n password = form.cleaned_data.get("password")\n newUser = User(username=username)\n newUser.email = email\n newUser.set_password(password)\n newUser.save()\n login(request, newUser)\n messages.success(request,"Successful on Register")\n return redirect("index")\n context = {\n "form": form\n }\n return render(request, "register.html", context)\n\n\ndef loginUser(request):\n return render(request, "login.html")\n\ndef logoutUser(request):\n return render(request, "logout.html")\nRun Code Online (Sandbox Code Playgroud)\n\n太感谢了!
\n最直接的方法是将方法添加到表单类中
def clean_username(self):
if User.objects.filter(username=username).exists():
raise forms.ValidationError("Username is not unique")
def clean_email(self):
if User.objects.filter(email=email).exists():
raise forms.ValidationError("Email is not unique")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7679 次 |
| 最近记录: |