django forms is_valid() 方法总是返回 true 如果所有需要的表单字段都是 false
django forms is_valid() method always returning true if all the form field's required is false
models.py 创建了模型 registerForm.my 数据库是 mysql.
from django.db import models
class registerForm(models.Model):
name = models.CharField(max_length=50 )
username = models.CharField( max_length=50)
email = models.EmailField(max_length=50)
password = models.CharField(max_length=50)
class Meta:
db_table = 'userForm'
def __str__(self):
return self.name
forms.py
from django import forms
from django.forms import widgets
from login_and_logout.models import registerForm
class regForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
# first call parent's constructor
super(regForm, self).__init__(*args, **kwargs)
# there's a `fields` property now
self.fields['name'].required = False
self.fields['username'].required = False
self.fields['email'].required = False
self.fields['password'].required = False
class Meta:
model = registerForm
fields = "__all__"
views.py
check form is valid using is_valid() method
def signup(request):
if request.method == 'POST':
form = regForm(request.POST)
print(form.is_valid())
if form.is_valid():
return HttpResponse('success')
else:
return HttpResponse('fail')
form = regForm()
return render(request, 'signup.html', {'form': form})
我尝试在客户端使用 javascript 实现表单验证,在 dajngo 中使用服务器端验证。为了在没有必需属性的情况下实现表单验证
我在 dajngo forms.py 中给出了必需的 false。但是在 is_valid() 方法之后总是返回 true。但是如果我删除了我用来删除 forms.py 中的 requied 字段的 init 函数,那么 is_valid() 就可以工作了。
我想删除必填字段,还想使用 is_valid() 方法。
你 print(print(form.is_valid()) 有效表格的语句没有在任何条件语句下检查是否满足保存有效表格的条件,这就是为什么它 return 没错。
def signup(request):
if request.method == 'POST':
form = regForm(request.POST)
# This where your conditional check for valid form starts from
# So you are suppose to put the print statement below the condition if statement
# All the logic of validations starts from the if statement
if form.is_valid():
print(form.is_valid())
data = form.save(commit=False)
data.username = request.user
# whatever data that you want to check for validation before saving it.
data.save()
return HttpResponse('success')
else:
return HttpResponse('fail')
form = regForm()
return render(request, 'signup.html', {'form': form})
models.py 创建了模型 registerForm.my 数据库是 mysql.
from django.db import models
class registerForm(models.Model):
name = models.CharField(max_length=50 )
username = models.CharField( max_length=50)
email = models.EmailField(max_length=50)
password = models.CharField(max_length=50)
class Meta:
db_table = 'userForm'
def __str__(self):
return self.name
forms.py
from django import forms
from django.forms import widgets
from login_and_logout.models import registerForm
class regForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
# first call parent's constructor
super(regForm, self).__init__(*args, **kwargs)
# there's a `fields` property now
self.fields['name'].required = False
self.fields['username'].required = False
self.fields['email'].required = False
self.fields['password'].required = False
class Meta:
model = registerForm
fields = "__all__"
views.py
check form is valid using is_valid() method
def signup(request):
if request.method == 'POST':
form = regForm(request.POST)
print(form.is_valid())
if form.is_valid():
return HttpResponse('success')
else:
return HttpResponse('fail')
form = regForm()
return render(request, 'signup.html', {'form': form})
我尝试在客户端使用 javascript 实现表单验证,在 dajngo 中使用服务器端验证。为了在没有必需属性的情况下实现表单验证 我在 dajngo forms.py 中给出了必需的 false。但是在 is_valid() 方法之后总是返回 true。但是如果我删除了我用来删除 forms.py 中的 requied 字段的 init 函数,那么 is_valid() 就可以工作了。 我想删除必填字段,还想使用 is_valid() 方法。
你 print(print(form.is_valid()) 有效表格的语句没有在任何条件语句下检查是否满足保存有效表格的条件,这就是为什么它 return 没错。
def signup(request):
if request.method == 'POST':
form = regForm(request.POST)
# This where your conditional check for valid form starts from
# So you are suppose to put the print statement below the condition if statement
# All the logic of validations starts from the if statement
if form.is_valid():
print(form.is_valid())
data = form.save(commit=False)
data.username = request.user
# whatever data that you want to check for validation before saving it.
data.save()
return HttpResponse('success')
else:
return HttpResponse('fail')
form = regForm()
return render(request, 'signup.html', {'form': form})