Django /formpage'处的类型错误&燃气轮机';在';str';和';int';此外,错误在表单中是特定的。是否有效
这是forms.pyDjango /formpage'处的类型错误&燃气轮机';在';str';和';int';此外,错误在表单中是特定的。是否有效,django,django-forms,Django,Django Forms,这是forms.py from django import forms from django.core import validators def check_for_z(value): if value[0].lower() !='z': raise forms.ValidationError("NAME NEEDS TO START WITH Z") class FormName(forms.Form): name = forms.CharField() e
from django import forms
from django.core import validators
def check_for_z(value):
if value[0].lower() !='z':
raise forms.ValidationError("NAME NEEDS TO START WITH Z")
class FormName(forms.Form):
name = forms.CharField()
email = forms.EmailField()
text = forms.CharField(widget= forms.Textarea)
botcatcher = forms.CharField(required=False,
widget=forms.HiddenInput,
validators=[validators.MaxValueValidator(0)])
这是views.py
from django.shortcuts import render
from . import forms
from .forms import FormName
from django.http import HttpResponseRedirect
def index(request):
return render(request,'formapp/index.html')
def form_name_view(request):
form = forms.FormName()
if request.method == "POST":
form = forms.FormName(request.POST)
if form .is_valid ():
# do something code
print("Validations scuces")
print("NAME: "+form.cleaned_data["name"])
print("EMAIL: "+form.cleaned_data["email"])
print("TEXT:"+form.cleaned_data['text'])
# return HttpResponseRedirect("/thanks/")
else:
form= FormName()
return render(request,'formapp/form_page.html',{'form' : form})
现在实际上它在表单的行上抛出了错误
并且在/formpage上显示类型错误
“str”和“int”实例之间不支持“>”
当我在botcatcher中更改/添加属性时就会发生这种情况,即我添加value='笑话'
其他一切都类似于普通的django验证器
MaxValueValidator(0)
和CharField
不能很好地协同工作,因为CharField
会将值清除为str
ing,然后将其与int
进行比较
您可以使用整型字段
检查该值是否小于或等于零:
class FormName(forms.Form):
name = forms.CharField()
email = forms.EmailField()
text = forms.CharField(widget=forms.Textarea)
botcatcher = forms.IntegerField(
required=False,
widget=forms.HiddenInput,
validators=[validators.MaxValueValidator(0)]
)
在
CharField
上使用validators.MaxValueValidator(0)
没有多大意义,因为您无法将字符串与int进行比较。
class FormName(forms.Form):
name = forms.CharField()
email = forms.EmailField()
text = forms.CharField(widget=forms.Textarea)
botcatcher = forms.IntegerField(
required=False,
widget=forms.HiddenInput,
min_value=0 # ← checks if it is a postive number
)