[英]Validator on a Django form field gives Attribute Error
我為制作的Django表單上的字段創建了一個驗證器。 這是驗證器:
from django.core.exceptions import ValidationError
from django.utils.translation import ugettext_lazy
def validate_value(value):
if value.isalpha():
if len(value) != 1:
raise ValidationError(
ugettext_lazy('Invalid zone value: %(value)s'),
params={'value': value}
)
elif value.isdecimal():
if int(value) == 0:
raise ValidationError(
ugettext_lazy('Invalid zone value: %(value)s'),
params={'value': value}
)
else:
raise ValidationError(
ugettext_lazy('Invalid zone value: %(value)s'),
params={'value': value}
)
該驗證器的作用是輸入一個字符串,看看它是單個字母還是數字。 如果這些都不是,或者該數字等於零,則將引發驗證錯誤。 例如,將接受“ a”和“ 3”,但是“ a1”將引發錯誤。 驗證器所附的表單如下:
from django import forms
from values.validators import validate_value
class LetterOrNumberForm(forms.Form):
value = forms.CharField(validators=[validate_value])
問題出在我測試表單時。 輸入錯誤的輸入后,表單應該執行的操作是在字段上方顯示驗證錯誤。 當我輸入應該傳遞的值時,例如“ a”或“ 3”,該表格可以正常工作。 但是當我輸入“ a1”之類的錯誤輸入時,Django崩潰了,我得到了這個錯誤:
'NoneType' object has no attribute 'isdecimal'
模板和視圖對於Django表單來說是非常標准的,因此我懷疑問題是否存在,如果我使用該驗證器並將其配置為表單的clean函數,則它實際上可以工作。 但是,我想使用驗證器。 有誰知道是什么原因引起的? 謝謝。
我解決了 原來,是導致表單問題的其他原因,而不是驗證程序本身。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.