我有一个带有 3 个表单的表单向导。第一个表单只有一个字段,并使用该字段在外部 API 中进行查找以验证数据。
我注意到请求花费的时间异常长,所以我只是在表单的init方法和外部 API 客户端调用中添加了一个打印语句。
似乎每次我在表单向导中执行该步骤时,我的第一个表单都被初始化和清理了 28 次。
我的第一个表单如下所示:
表格.py
class MyForm1(forms.Form):
issue_id = forms.CharField()
def __init__(self, *args, **kwargs):
print "init form 1"
super(MyForm1, self).__init__(*args, **kwargs)
def clean(self):
cleaned_data = super(MyForm1, self).clean()
print "clean issue id"
issue_id = cleaned_data.get("issue_id")
if issue_id is not None:
try:
issue = ApiCLient.get_issue(issue_id)
except APIError:
raise forms.ValidationError("Issue not found. Try again!")
else:
return cleaned_data
raise forms.ValidationError("Issue not found. Try again!")
向导的东西在 Django Docs 中是相当标准的,但在这里:
视图.py
class MyWizard(SessionWizardView):
def done(self, form_list, **kwargs):
# some logic at the end of the wizard
网址.py
wizard_forms = [MyForm1, MyForm2, MyForm3]
...
url(r'wizard/$', login_required(views.MyWizard.as_view(wizard_forms))),
正如我之前所说,执行第一步会导致
init form 1
clean issue id
被打印到控制台正好 28 次。
有任何想法吗?这是 Django 表单向导中的功能还是错误?