簡體   English   中英

Django表單字段上的驗證器給出屬性錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM