Python django как я могу предотвратить дублирование ввода studnumber, email, username(unmae) при регистрации?
Python Django как я могу предотвратить дублирование ввода studnumber, email, username(unmae) при регистрации?
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 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, чтобы создавать приложения простым и быстрым способом.