Python 使用Django向导的动态步骤数
向导的步骤可能是动态的吗?例如,第二步重复出现n次?您想做什么 如果您想创建一个向导,其中步骤x重复n次,那么答案是肯定的,您可以这样做,而且并不难 您只需要创建一个向导类工厂,在给定特定参数的情况下创建类,就完成了 如果你是说,我可以在运行中更改向导的步骤吗。 答案仍然是肯定的,但事情会变得更复杂一些,因为在向导初始化之后,您必须更改其内部状态Python 使用Django向导的动态步骤数,python,django,wizard,django-formwizard,Python,Django,Wizard,Django Formwizard,向导的步骤可能是动态的吗?例如,第二步重复出现n次?您想做什么 如果您想创建一个向导,其中步骤x重复n次,那么答案是肯定的,您可以这样做,而且并不难 您只需要创建一个向导类工厂,在给定特定参数的情况下创建类,就完成了 如果你是说,我可以在运行中更改向导的步骤吗。 答案仍然是肯定的,但事情会变得更复杂一些,因为在向导初始化之后,您必须更改其内部状态 这一点都不好玩,如果你真的需要我建议的第二个选项,请尝试寻找替代设计,并选择动态向导方法作为最后手段。我也遇到了同样的问题,表单向导(即使在Djang
这一点都不好玩,如果你真的需要我建议的第二个选项,请尝试寻找替代设计,并选择动态向导方法作为最后手段。我也遇到了同样的问题,表单向导(即使在Django 1.4中)对我来说也不起作用。这是如此多的定制,以至于有些事情开始出错,调试非常糟糕 我确实根据现有的分类编写了一些代码。请查看我的GIST,我在那里发布了一个对我非常有用的解决方案。如果你有任何意见或建议(包括班级名称),请发表
- 多页表单管理器,以(数学)图的形式排列,具有动态路径(下一个表单取决于实际状态和用户输入)和表单数量。处理存储和验证。基于Django-1.4的
。Django.contrib.formtools.wizard.views.SessionWizardView
- 自定义Django会话存储。删除了所有处理文件的功能。基于Django-1.4的
和Django.contrib.formtools.wizard.storage.base.BaseStorage
。Django.contrib.formtools.wizard.storage.session.SessionStorage
url('/create_wizard/', factory_wizard, name='factory_wizard')
这是工厂:
class WizardClass(SessionWizardView):
...
def factory_wizard(request, *args, **kwargs):
parameter_to_know_which_step_number = # I let you implement this one ( I did it by the session data )
ret_form_list = [FirstFormClass, SecondFormClass]
for _ in range(parameter_to_know...):
form_list.append(SecondFormClass)
class ReturnClass(WizardClass):
form_list = ret_form_list
return ReturnClass.as_view()(request, *args, **kwargs)
您能提供向导类工厂的代码吗?这个工厂的参数是什么?