【问题标题】:How to apply DRY to Django Models, forms如何将 DRY 应用于 Django 模型、表单
【发布时间】:2015-03-13 03:03:03
【问题描述】:

我正在开发一个网站,同时开发一个移动应用程序。

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

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

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

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

我应该为移动应用创建一个特定的用户窗体吗?我应该将这些验证移到模型类吗?

【问题讨论】:

    标签: django django-models django-forms


    【解决方案1】:

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

    一个更简单的解决方案(尽管有点骇人听闻)是让移动应用程序在调用 API 时提交用户编写的密码,分别为“password1”和“password2”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-12
      • 2018-05-27
      • 1970-01-01
      • 2018-10-10
      • 1970-01-01
      • 2014-03-08
      • 2013-06-16
      • 1970-01-01
      相关资源
      最近更新 更多