Python django 我如何防止在注册中重复输入学号、电子邮件、用户名(unmae)?

Python django how i can prevent the duplicate entry of studnumber,email,username(unmae) in registration?

Python Django 如何防止在注册时重复输入学号、电子邮件、用户名(unmae)?我的 python 文件是视图、URL、模型,settings.py

from django.shortcuts import redirect, render
from register.models import newacc
from django.contrib import messages

def Unreg(request):
if request.method=='POST':
     studnumber=request.POST['studnumber']
     fname=request.POST['fname']
     age=request.POST['age']
     gender=request.POST['gender']
     uname=request.POST['uname']
     email=request.POST['email']
     pwd=request.POST['pwd']
     contact=request.POST['contact']
     newacc(studnumber=studnumber,fname=fname,age=age,gender=gender,uname=uname,email=email,pwd=pwd,contact=contact).save()
     messages.success(request,"The New User is save !")
     return render(request,'Registration.html')
else:
     return render(request,'Registration.html')

首先,您必须在模型中定义以下内容:

class newacc(models.Model):
    # Your fields here...

     class Meta:
         unique_together = ('studnumber','email','uname')

这样做,如果您调用方法 newacc.save() 并且该限制不正确,它将引发异常。

在视图中,最好的方法和标准方法是使用 Forms,django 提供了一个名为 ModelForm 的特定 class 来帮助您处理模型。

例如,要为我们的模型创建一个表单,我们可以这样做:

class NewACCForm(forms.ModelForm):
    class Meta:
        model = newacc
        fields = "__all__"

它将创建一个表单,允许您验证您在模型中定义的约束是否正确,并且您可以根据该表单的验证执行操作。

现在您的视图将类似于以下代码:

def Unreg(request):
    if request.method=='POST':
        form = NewACCForm(request.POST)
        if form.is_valid():
            form.save()
            messages.success(request,"The New User is save !")
        else:
            messages.error(request, "Was not possible to save the user")
    return render(request,'Registration.html')

您当然可以对其进行改进,但我只是在向您介绍 Django 中缺少的部分的基本概念,您必须在 Django 中学习才能轻松快速地创建应用程序。