django - charfield 的自定义验证器不会引发任何错误
问题描述
我已经完成了一个验证器,它应该检查来自 charfield 的输入:
def postnvali(value):
if not value.isalnum():
raise ValidationError(_('postnummer måste vara siffror'))
它用于以下模型:
class Adress(Model):
street=CharField(max_length=100)
snumb=CharField(max_length=15)
town=CharField(max_length=100)
postn=CharField(max_length=5,validators=[postnvali])
def __str__(self):
return 'city: ' + self.town
class Meta:
ordering=('street','town')
但是当使用管理员并输入错误的格式时,没有任何反应,没有错误消息。为什么?
解决方案
函数str.isalnum(…)
返回:
如果 S 中的所有字符都是字母数字,则返回 True 。
这意味着字符可以是数字 (0-9) 或字母(A-Za-z),但根据错误消息,您希望只允许数字。因此,您应该使用该功能str.isdigit(…)
:
如果字符串中的所有字符都是数字并且至少有一个字符,则返回 True,否则返回 False。
所以我们可以将验证器重写为:
def postnvali(value):
if not value.isdigit():
raise ValidationError(_('postnummer måste vara siffror'))
推荐阅读
- python-3.x - 用零附加numpy数组
- python - Numpy.where 用 pandas 列引发 KeyError
- javascript - NodeJS/Express 后端将 HTML 转换为 PDF。但是,它没有在 PDF 中格式化。所以我想调整内容以适应 PDF
- reactjs - 带有反应的引导汉堡菜单
- reactjs - 通过删除所选选项或添加新选项来应用数组中的值
- matrix - 数学中的矩阵乘法
- sql - 如何在使用 SQL Server 中的存储过程更新该记录之前通过触发器在其 table_A_history 表中插入 table_A 表的记录?
- php - Laravel - Livewire,如何自定义全局消息 URL?
- azure-webapps - 如何监控 Azure WebApp 是否响应?
- javascript - 在javascript中计算范围对象的值