0

我有一个由几个表单组成的表单向导(Django 1.4)。我正在尝试检查process_step函数中的某些条件(对于中间步骤),退出表单向导并重定向到主页。当我尝试在函数HttpResponseRedirect(<homepage>)结束时使用重定向时process_step,它会忽略并继续执行下一个表单步骤。

4

2 回答 2

0

为了让 Django 真正呈现下一步,它需要执行 returnHttpResponsereturn render_to_response等操作。所以很可能控制流根本不会到达HttpResponseRedirect.

于 2012-11-09T17:23:15.107 回答
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)

您可能还想在获取清理数据之前添加一个条件,以检查当前或下一步是什么。

于 2012-11-09T21:58:25.130 回答