Python Django:将forms.py拆分为多个文件
我有一个很长的forms.py,我想把它分割成更小的部分,在代码中做尽可能少的修改Python Django:将forms.py拆分为多个文件,python,django,django-forms,Python,Django,Django Forms,我有一个很长的forms.py,我想把它分割成更小的部分,在代码中做尽可能少的修改 有什么想法吗?我们将Django表单类放入forms.py文件的主要原因是惯例。它使其他人很容易查看您的应用程序,并知道他或她将在任何给定的文件中找到哪些内容。遵守惯例是好的,但这不是法律,你可以随意组织你的代码 下面是我要做的: 首先,看看是否可以通过分解重复的代码来减少代码量。可以将通用验证逻辑拉入。共享字段或功能的表单可以从公共父级继承 如果您已经创建了自定义字段类,则可以将所有这些类分离到应用程序目录中名
有什么想法吗?我们将Django表单类放入
forms.py
文件的主要原因是惯例。它使其他人很容易查看您的应用程序,并知道他或她将在任何给定的文件中找到哪些内容。遵守惯例是好的,但这不是法律,你可以随意组织你的代码
下面是我要做的:
首先,看看是否可以通过分解重复的代码来减少代码量。可以将通用验证逻辑拉入。共享字段或功能的表单可以从公共父级继承
如果您已经创建了自定义字段类,则可以将所有这些类分离到应用程序目录中名为formfields.py
的文件中,然后将它们导入forms.py
。同样,如果您有自定义验证器,您可以将其取出并导入
如果这些都不能为您减少足够的文件大小,我会按函数将表单类拆分为几个文件,例如
forms\u user.py
,forms\u products.py
,forms\u data\u entry.py
或其他文件。这样,我们在给定文件中找到的内容仍然很明显。在引用旧表单的任何地方,您都必须更改导入语句,但这些应该是唯一必要的更改。我不能评论,所以我正在写答案。您可以做的另一件事是创建表单
在应用程序目录中的目录(记住关于\uuuu init\uuuuuuuuuuupy
)并将表单拆分为formone.py、form2.py、
然后您可以从myapp.forms.formone导入类似的表单
或者在\uuuu init\uuuuu.py
中,您可以放置代码:
from formone import *
from form2 import *
您可以从myapp导入带有
的表单。forms import FormOne
如果您真的想做尽可能少的更改,按函数(forms\u user.py、forms\u product.py)将forms.py拆分为多个文件是最简单的
如果您有时间重构或启动新项目,最好的解决方案是为项目的每个组件(例如用户、项目…)制作一个新的django应用程序,每个组件都有自己的forms.py文件。如果一个django应用程序变得太大,那么很多东西都会停止扩展(models.py、views.py等),整个系统的维护都会变得更加困难。您具体遇到了哪些问题?为什么这很难?答案说很简单。我知道拆分views.py可能有点混乱,所以我问了,因为我不知道是否有任何问题。这是一个好主意。我现在正在考虑这个问题。我的一个想法是在每个模块中都有一个
forms.py
,但这似乎与Django-ish相反,所以我考虑使用这些其他想法。。。