在django表单向导中使用不同的模板

在django表单向导中使用不同的模板,django,django-forms,django-formwizard,Django,Django Forms,Django Formwizard,我在看文档,我不太确定如何为每个步骤使用不同的模板 我查看了源代码,似乎模板名称是硬编码的: class WizardView(TemplateView): """ The WizardView is used to create multi-page forms and handles all the storage and validation stuff. The wizard is based on Django's generic class based

我在看文档,我不太确定如何为每个步骤使用不同的模板

我查看了源代码,似乎模板名称是硬编码的:

class WizardView(TemplateView):
    """
    The WizardView is used to create multi-page forms and handles all the
    storage and validation stuff. The wizard is based on Django's generic
    class based views.
    """
    storage_name = None
    form_list = None
    initial_dict = None
    instance_dict = None
    condition_dict = None
    template_name = 'formtools/wizard/wizard_form.html'

...........
文档中说了一些关于mixin的内容,但我不知道如何使用它们,因为我刚刚开始使用django

谢谢


更新:

我进一步研究了源代码,发现有一个方法
get\u template\u names

我试过:

class AddWizard(SessionWizardView):
        def get_template_names(self, step):
                if step == 0:
                        return 'business/add1.html'
                return 'business/add2.html'
        def done(self, form_list, **kwargs):
                return render_to_response('business/done.html', {
                        'form_data': [form.cleaned_data for form in form_list],
                })
但有一个错误:


get\u template\u names()只接受2个参数(给定1个)
get\u template\u names
不接受参数。你不能仅仅为一个函数定义一个新的参数来接受,并希望框架能传递它!(用于将来的故障排除)

WizardView
源代码判断,您似乎可以通过
self.steps.current
访问当前活动的步骤,您可以在
get\u template\u names
视图中使用该步骤返回包含该步骤的路径

class AddWizard(SessionWizardView):
        def get_template_names(self):
            return ['step_{0}_template.html'.format(self.steps.current)]

我不确定当前的
current
是字符串还是整数或是什么-但是查看视图,您应该会发现一个有用的“找不到名为X的模板”错误

此外,请参见此处接受答案中的方法: