我有一个bind_form
自定义装饰器,它将指定的 django 表单分配给一个函数。此装饰器将允许对函数参数“自动”执行验证 - 例如,检查是否age
在所需范围内,或检查用户是否存在。这样做是出于 DRY 的原因。
装饰器中引用的每个表单都存在于forms
模块中。
这种表单验证的一个例子可能是users.check_user_exists
- 因此我必须在users
模块中导入form
模块。
所以,现在你看到我有forms
模块,导入users
模块以便users.user_exists
可以引用,但users
导入forms
模块以便可以在表单装饰器中使用表单:
表格.py:
import users
def bind_form(func):
# binds form to function
...
class Create_User(Forms.Form):
# validated create_user function
...
def clean(self): #using for validation
if users.user_exists(user):
...
用户.py:
import forms
@forms.bind_form(form=forms.Create_User)
def create_user(**kwargs):
...
因此,一旦users
导入,就会users
尝试引用bind_form
,但这还没有被forms
.
这是我的设计缺陷,还是我遗漏了一些简单的东西?如果有设计缺陷 - 欢迎提出改进建议。
** 约束:**
- 模块中有多种形式
forms
。 users
模块中有许多附加了验证表单的函数。- 验证表单使用来自
users
和其他模块的许多功能。
换一种方式解释:
一种。在模块的第 4 行forms
导入users
forms
湾。users.create_user
参考forms.Create_User
C。还不forms
知道,因为它是在模块的第 5 行声明的Create_User
forms