Django:将forms.py分成几个文件

时间:2011-07-12 08:47:33

标签: python django django-forms

我有一个很长的forms.py,我想把它拆分成较小的部分,尽可能少地修改代码。

有什么想法吗?

3 个答案:

答案 0 :(得分:8)

我无法发表评论,所以我正在写答案。您可以做的另一件事是创建forms  app目录中的目录(记住__init__.py)并将表单拆分为formone.py,form2.py,...

然后您可以导入from myapp.forms.formone import FormOne

之类的表单

或者__init__.py您可以放置​​代码:

from formone import *
from form2 import *

您可以使用from myapp.forms import FormOne

导入表单

答案 1 :(得分:2)

我们将Django表单类放入forms.py文件的主要原因是约定。它使其他人可以轻松查看您的应用程序,并了解他或她将在任何给定文件中找到的内容。遵循惯例很好,但这不是法律,您可以随意组织代码。

这就是我要做的事情:

首先,看看你是否可以通过分解重复的代码来减少代码量。可以将通用验证逻辑拉入custom validators。共享字段或功能的表单可以从公共父级继承。

如果您已创建自定义字段类,则可以将所有这些类别分离到应用程序目录中名为formfields.py的文件中,然后将它们导入forms.py。同样,如果您有自定义验证器,则可以将它们取出并导入它们。

如果没有一个可以减少文件大小,我会按功能将表单类拆分成几个文件,例如: forms_user.pyforms_products.pyforms_data_entry.py或其他。这样,我们将在给定文件中找到的内容仍然很明显。您必须在引用旧表单的任何地方更改import语句,但这些应该是唯一必要的更改。

答案 2 :(得分:0)

如果您真的希望尽可能少地进行更改,则通过函数(forms_user.py,forms_product.py)将forms.py拆分为多个文件是最简单的。

如果您有时间重构或正在开始一个新项目,最好的解决方案是为项目的每个组件(例如用户,项目......)创建一个新的django应用程序,每个组件都有自己的forms.py文件。如果单个django应用程序变得太大,很多东西就会停止扩展(models.py,views.py等),并且维护工作会越来越难。