单击按钮时不显示 Django 自定义验证
django custom validation not showing up on button click
我在 forms.py 中为我的表单编写了自定义验证,但它不起作用。它没有显示任何内容 ("email not exist"),当我按下提交按钮时,它看起来像是在刷新页面。
如果有任何帮助,我将不胜感激。
这是我的 view.py:
def delete(request):
if request.method == 'POST' and "DeleteButton" in request.POST:
form = LoginPageDelete(request.POST)
if form.is_valid():
DeleteData = form.cleaned_data
q = DeleteData["emailD"]
query = Users.objects.get(email = q )
query.delete()
fetch = Users.objects.all()
return render(request,'Result.html',{'QueryDelete':fetch.values(),})
FormDelete = LoginPageDelete()
return render(request,'delete.html',{"FormDelete":FormDelete,})
这是模板:
<html>
<head>
<title>Delete</title>
</head>
<body>
{% if FormDelete.errors %}
<p style="color:red">Please correct the problems</p>
123
{%endif%}
<form action="" method="POST">
<table>
{{FormDelete.as_table}}
</table>
{%csrf_token%}
<input type="submit" value="Delete" name="DeleteButton">
</form>
</body>
这里是 forms.py:
from django import forms
from login.models import Users
class LoginPageDelete(forms.Form):
emailD = forms.EmailField(required=True)
def clean_emailD(self):
email = self.cleaned_data['emailD']
if not Users.objects.filter(email = email).exists():
raise forms.ValidationError("email not exist")
return email
您根本没有return将经过验证的表单添加到模板中。每次在您的视图中,您 return 一个 LoginPageDelete() 的新实例,并丢弃带有验证信息的实例。
def delete(request):
if request.method == 'POST' and "DeleteButton" in request.POST:
form = LoginPageDelete(request.POST)
if form.is_valid():
DeleteData = form.cleaned_data
q = DeleteData["emailD"]
query = Users.objects.get(email = q )
query.delete()
fetch = Users.objects.all()
return render(request,'Result.html',{'QueryDelete':fetch.values(),})
else:# here request.method is get or in your case "DeleteButton" not in request.POST
form = LoginPageDelete()
return render(request,'delete.html',{"FormDelete":form})
我在 forms.py 中为我的表单编写了自定义验证,但它不起作用。它没有显示任何内容 ("email not exist"),当我按下提交按钮时,它看起来像是在刷新页面。 如果有任何帮助,我将不胜感激。
这是我的 view.py:
def delete(request):
if request.method == 'POST' and "DeleteButton" in request.POST:
form = LoginPageDelete(request.POST)
if form.is_valid():
DeleteData = form.cleaned_data
q = DeleteData["emailD"]
query = Users.objects.get(email = q )
query.delete()
fetch = Users.objects.all()
return render(request,'Result.html',{'QueryDelete':fetch.values(),})
FormDelete = LoginPageDelete()
return render(request,'delete.html',{"FormDelete":FormDelete,})
这是模板:
<html>
<head>
<title>Delete</title>
</head>
<body>
{% if FormDelete.errors %}
<p style="color:red">Please correct the problems</p>
123
{%endif%}
<form action="" method="POST">
<table>
{{FormDelete.as_table}}
</table>
{%csrf_token%}
<input type="submit" value="Delete" name="DeleteButton">
</form>
</body>
这里是 forms.py:
from django import forms
from login.models import Users
class LoginPageDelete(forms.Form):
emailD = forms.EmailField(required=True)
def clean_emailD(self):
email = self.cleaned_data['emailD']
if not Users.objects.filter(email = email).exists():
raise forms.ValidationError("email not exist")
return email
您根本没有return将经过验证的表单添加到模板中。每次在您的视图中,您 return 一个 LoginPageDelete() 的新实例,并丢弃带有验证信息的实例。
def delete(request):
if request.method == 'POST' and "DeleteButton" in request.POST:
form = LoginPageDelete(request.POST)
if form.is_valid():
DeleteData = form.cleaned_data
q = DeleteData["emailD"]
query = Users.objects.get(email = q )
query.delete()
fetch = Users.objects.all()
return render(request,'Result.html',{'QueryDelete':fetch.values(),})
else:# here request.method is get or in your case "DeleteButton" not in request.POST
form = LoginPageDelete()
return render(request,'delete.html',{"FormDelete":form})