编辑: FWIW,我正在运行django 1.3
我有......
class CreateProductWizard(FormWizard):
def get_template(self, step):
if step == 1:
return 'product/form_wizard/editor.html'
else:
return 'product/form_wizard/wizard_%s.html' % step
def process_step(self, request, form, step):
if step == 1:
self.extra_context = {'ptype': form.cleaned_data}
return
else:
return
def done(self, request, form_list):
# now that it's all together, store it.
return render_to_response('product/form_wizard/done.html',
{'form_data': [form.cleaned_data for form in form_list]},
context_instance=RequestContext(request))
我想将self.extra_context放到模板中。
如何在模板上获得该功能?
我试过模板:
{{extra_context}}
{{form.extra_context}}
{{form.extra_context.ptype}}
等。
答案 0 :(得分:5)
查看docs我会说get_context_data
就是你所追求的:
返回步骤的模板上下文。您可以覆盖此方法 为所有或一些步骤添加更多数据。这个方法返回一个 包含渲染表单步骤的字典。
答案 1 :(得分:2)
所以我最终在模板上使用的是:
{{ptype}}
我已经尝试过了。
问题,我仍然不确定为什么我有:
def process_step(self, request, form, step):
if step == 1:
self.extra_context = {'ptype': form.cleaned_data}
return
else:
return
和有效的是:
def process_step(self, request, form, step):
self.extra_context = {'ptype': 'hello!!',}
由于某种原因,传递给'process_step()'的'step'始终是== 0,这使得'if step == 1:'逻辑失败...
在查看源代码(django.contrib.formtools.wizard.FormWizard)之后,看起来可能失败的一件事是我的表单无效。它必须对步数增加并调用process_step函数有效。但是,{{step}}变量获得了正确的值。我并没有对表格做任何疯狂的事情......
太奇怪了。但我的主要问题已经解决了。