如何将DRY应用于Django模型,表单

时间:2015-01-14 19:52:19

标签: django django-models django-forms

我正在网站上工作,同时在移动应用上工作。

对于网站,我为User模型创建了一个Django表单,它覆盖了clean和valid_方法以提供自定义验证。

对于移动应用程序,我正在做一个REST API,它使用Tastypie来公开和终端创建一个新用户。

我怀疑在哪里以及如何为应用DRY原则的用户模型定义自定义验证。

我可以根据用户在移动应用中提供的数据创建UserForm,然后使用方法is_valid()来验证数据,但是表单包含一个password_confirm字段,该字段也经过验证,并且在应用程序中此字段不会不存在。

我应该为移动应用创建特定的UserForm吗?我应该将这些验证移到模型类吗?

1 个答案:

答案 0 :(得分:0)

最简单的方法可能是对表单进行子类化。创建一个没有password2字段的LoginForm,并将其用于移动登录API。然后创建一个名为WebLoginForm的子类并添加一个password2字段,以及一个包含验证逻辑的clean_password2()方法。这样,您甚至不需要覆盖任何其他clean()代码。

更简单 - 虽然是hackish - 解决方案是让移动应用程序在进行API调用时提交用户写入的密码“password1”和“password2”。

相关问题