Django:将forms.py拆分为多个文件
我有一个很长的 forms.py 文件,我想把它拆分成几个小部分,并且尽量少改动代码。
有没有什么好主意?
3 个回答
如果你真的想尽量少改动,可以把forms.py文件按功能拆分成多个文件,比如forms_user.py和forms_product.py,这样是最简单的。
如果你有时间重构代码,或者是刚开始一个新项目,最好的办法是为项目的每个部分创建一个新的django应用,比如用户部分、项目部分等等,每个应用都有自己的forms.py文件。如果一个django应用变得太大,很多东西就会变得难以扩展,比如models.py、views.py等,维护起来也会变得更加困难。
我不能评论,所以我写了这个回答。你可以做的另一件事是,在你的应用程序目录下创建一个 forms
文件夹(记得要有 __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
来导入表单了。
我们把Django的表单类放到一个叫forms.py
的文件里,主要是为了遵循一种约定。这样做可以让其他人更容易理解你的应用程序,知道在某个文件里能找到什么内容。遵循这种约定是个好习惯,但并不是硬性规定,你可以根据自己的喜好来组织代码。
我会这样做:
首先,看看能不能通过提取重复的代码来减少代码量。比如一些常用的验证逻辑可以放到自定义验证器里。如果有多个表单共享某些字段或功能,可以让它们继承一个共同的父类。
如果你创建了自定义字段类,可以把这些类放到一个叫formfields.py
的文件里,然后在forms.py
中导入它们。同样,如果你有自定义的验证器,也可以把它们单独放出来并导入。
如果这些方法都不能有效减少文件大小,我会根据功能把表单类拆分成几个文件,比如forms_user.py
、forms_products.py
、forms_data_entry.py
等等。这样一来,文件的内容依然很清晰。你需要在引用旧表单的地方修改导入语句,但这应该是唯一需要更改的地方。