我有一个由几种形式组成的表单向导(Django 1.4)。我正在尝试检查process_step
函数中的某些条件(对于中间步骤),退出表单向导并重定向到主页。当我尝试在HttpResponseRedirect(<homepage>)
函数末尾使用process_step
重定向时,它会忽略并继续执行下一个表单步骤。
答案 0 :(得分:0)
为了让Django实际呈现下一步,它需要返回HttpResponse
或return render_to_response
等。所以很可能控制流根本就不会到达HttpResponseRedirect
答案 1 :(得分:0)
Process_step只处理数据,它返回的内容不会被渲染。可能你最好的选择是覆盖render_next_step,尽管你也可以使用其他几个函数来处理它。
因此,覆盖render_next_step,并执行以下操作:
def render_next_step(self, form, **kwargs):
data = get_cleaned_data('2') # or whatever your step with the flag is
if data.get('your_flag', False):
self.storage.reset()
return HttpResponseRedirect()
return super(Wizard, self).render_next_step(self, form, **kwargs)
您可能还想在获取清理数据之前添加条件,以检查当前或下一步是什么。