繁体   English   中英

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

How to apply DRY to Django Models, forms

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

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

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

对于移动应用程序,我正在执行一个REST API,该API公开并终结点以为此使用Tastypie创建新用户。

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

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

我应该为移动应用程序创建一个用户窗体吗? 我应该将这些验证移至模型类吗?

1 个回复

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

甚至更容易(虽然有点骇人听闻)的解决方案是让移动应用程序在调用API时提交用户写成“ password1”和“ password2”的密码。

1 如何将DRY应用于以下代码?

我在代码中复制了3次以下结构。 唯一的动态部分是“ Item1Model”,“ Item1AddView”和“ Item1Cell”,其中“ Item1Model”是NSManagedObject,另外两个是SwiftUI视图结构。 如何仅使用一个结构并传递动态3个对象? ...

2 如何将DRY原理应用于枢纽月份的SQL语句

我想知道其他人如何处理这种情况……以及如何对这种情况应用“不要重复自己”(DRY)原则。 我发现自己经常在T-SQL中使用PIVOTing或编写CASE语句以将Months表示为列。 我通常有一些字段,其中将包括(1)日期字段和(2)值字段。 当我通过ASPX页面或Reporting ...

3 如何将DRY原理应用于javascript和查询

我大约有30个网页,它们都是HTML表单。 每个页面都有两个或更多不同的表单元素-选择,输入文本,复选框,文本区域-以及各种ui元素,弹出窗口,表单验证等。我试图重构页面中使用的jquery以使用DRY原理,但是我不确定该怎么做。 以下是一些使用的jquery的一些示例: 示例代码块A ...

4 如何将DRY应用于迭代不同类的代码

我有各种类以匹配的格式准备结果:一个List,其中对象是List,其中对象是List。 这是目标应用程序所必需的。 源数据来自各种系统。 这是一个: 这可能是最干净的形式。 这是另一个: 如您所见,结构重复,但获取数据的方式不同。 例如,在前者中,它是记录[列],但 ...

6 如何将Fastai表格模型应用于新数据?

我使用fastai.tabular训练了一个模型。 现在,我有一个合适的学习者。 最终,模型将应用于新数据,而不仅仅是适合训练集并根据测试集进行评估。我尝试了各种不同的方法,均导致错误或有些古怪。 有没有办法将经过fastai训练的模型应用于以前不可用的数据? 还是我必须反复训练模型并输 ...

2019-06-05 23:28:44 1 237   fast-ai
9 将变异应用于嵌套Maps和DRY

我们一直在使用React + Redux + Immutable JS开发SPA。 我们的Redux状态包含17个Maps(目前,但承诺会增长),它们的结构{page,pages,sortBy,item,...}完全相同,我们希望避免复制粘贴的reducers(和测试) ,下面是一个简单的示例 ...

10 如何将CSS应用于表格行

我需要将背景色应用于html表的交替行。 我当前的代码: 和jQuery是 我确定上面的jquery不正确,因为我在单个页面中有多个表,所以我无法申请 所以我的问题是如何解决这个问题? ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM