django - 在 Django 中分离表单输入和模型验证?

标签 django django-models django-forms django-views

在 Django 项目中,将输入验证与模型级验证分开是典型的做法吗?例如,验证用户名是否符合命名标准将是输入验证,验证用户是否已存在于数据库中将是模型级验证。

我一直在查看同事的代码,他们将两种类型的验证都放在表单类中(在 forms.py 中)。这是典型的设置,还是模型级验证出现在模型或 View 中更常见?

或者是否有更好的方法来解决这个问题——例如使用ModelForm?我对 Django 相当陌生,正在尝试了解这种情况的推荐模式。

最佳答案

这是一个非常有趣的问题(对我来说)。

在我看来,所有验证代码都应该移至模型代码。这是不违反业务规则的方法。当验证代码位于模型中时,不可能忘记新表单中的某些验证或多个表单中的规则不一致。

我链接到你'Django, Raise a validation error in a model's save method'与你的问题相关的问题。在下面的问题中,您可以看到如何将代码验证从表单移动到模型。希望这个简单的介绍能够对您有所帮助。

你来自哪个框架?在您的环境中如何编写验证规则?

关于django - 在 Django 中分离表单输入和模型验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9057446/

相关文章:

python - 在 Django 中捕获 OperationalError 1040

python - unique_for_date 的用法

Django 选择查询时间差异

django - Django中子查询的查询

python - 如何为具有多对多字段的 Django 模型创建对象?

django - 我得到AttributeError : 'SubscriptionForm' object has no attribute 'model' when I try runserver and makemigrations

python - Django 从 postgresql 数据库填充下拉菜单的完整示例

python - 将 Django 电子邮件打印到控制台时出现问题

python - html 模板中的 Django for 循环不显示

Django 模型 : drop a field