Django 表单验证之自定义表单验证器

桃扇骨 2023-10-10 13:12 102阅读 0赞

本文基于Django 表单验证 一文,补充完善表单验证器之自定义表单验证器

具体步骤总结如下:

第一:在formValidation.py 文件中,添加自定义名称敏感验证器(NameValidation)

  1. # 自定义名称敏感校验器
  2. class NameValidation:
  3. def __call__(self, value):
  4. """
  5. 自定义验证
  6. :param value: value表示要验证的数据
  7. :return: 如果ValidationError表示验证失败 正常结束表验证通过
  8. """
  9. nameList = ["笑嘻嘻", "妈蛋", "滚犊子"]
  10. for name in nameList:
  11. if value.find(name) != -1:
  12. raise ValidationError("名称不能含有敏感词汇")

第二:在BookForm 表单验证对象中,添加validators(验证器)属性列表,并初始化名称敏感校验器。

20210811104947682.png

完整formValidation.py 代码:

  1. from django import forms
  2. from django.core.validators import ValidationError, RegexValidator
  3. # 自定义名称敏感校验器
  4. class NameValidation:
  5. def __call__(self, value):
  6. """
  7. 自定义验证
  8. :param value: value表示要验证的数据
  9. :return: 如果ValidationError表示验证失败 正常结束表验证通过
  10. """
  11. nameList = ["笑嘻嘻", "妈蛋", "滚犊子"]
  12. for name in nameList:
  13. if value.find(name) != -1:
  14. raise ValidationError("名称不能含有敏感词汇")
  15. # Book 表单验证器
  16. class BookFrom(forms.Form):
  17. """验证Book表单"""
  18. name = forms.CharField(
  19. required=True,
  20. max_length=10,
  21. min_length=2,
  22. validators=[
  23. # 自定义验证器
  24. NameValidation()
  25. ],
  26. error_messages={
  27. "required": "名称必填",
  28. "max_length": "名称不能超过十位",
  29. "min_length": "名称至少是两位"
  30. })
  31. author = forms.CharField(
  32. required=True,
  33. error_messages={
  34. "required": "作者必填"
  35. })

其他控制层views.py 文件无需修改。

发表评论

表情:
评论列表 (有 0 条评论,102人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Django 验证

    Django 表单类简介:用户表单是Web端的一项基本功能,大而全的Django框架中自然带有现成的基础Form对象 Form表单的功能: 1、自动生成HTML表单元素 2