django - 如何正确验证 ModelForm(最佳实践)?
问题描述
我有一个需要验证的 ModelForm。我目前正在使用自定义验证器函数覆盖 clean() 方法。如果出现问题,这些验证器会引发 ValidationError。如果一切都很好 - 他们什么也不做。我有两个问题:
这种方法是一个好习惯吗?
我用以下方式命名我的验证器函数:ensure_SOMETHING(例如 ensure_circular_reference_nonexistence(...)、ensure_max_depth_limit_is_respected(...) 等)。再次,这是一个好习惯吗?我还没有看到其他用户在他们的函数名称中“确保”。
100% 清楚,这就是我的 clean() 方法的样子:
def clean(self, *args, **kwargs):
ensure_circular_reference_nonexistence(...)
ensure_max_depth_limit_is_respected(...)
return super(MyForm, self).clean(*args, **kwargs)
解决方案
我觉得你很好。但是您应该知道,清洁和验证不是一回事。这就是为什么 django forms 有 is_valid 方法和 clean 方法的原因。
如果您在那里所做的验证,就像它看起来的那样,那么您最好使用您的函数扩展 is_valid 方法。
它不会阻止您调用 clean 方法。事实上,你也应该调用 clean 方法。
推荐阅读
- ms-access - MS Access 双击列表框运行时错误 3075
- intellij-idea - IntelliJ IDEA 总是更新索引
- java - Java / JSON.simple - 在斜杠之前打印反斜杠
- angularjs - Angular JS 中 focus-next 自定义指令的测试用例
- r - 仅当使用 dplyr 被相同的值“夹在中间”时才填充 NA
- xamarin.forms - 用星号而不是点 xamarin.iOS 隐藏 UITextField 密码
- javascript - 如何处理奇怪组合的 websocket 消息?
- php - 如何正确衡量脚本的性能?
- sql - 创建从两个不同的日期和项目给出的日期的递归列表
- css - 这段代码中 :before 属性的目的是什么?