0

いくつかのフォーム (Django 1.4) で構成されるフォーム ウィザードがあります。機能の状態をprocess_step(中間ステップで)確認し、フォームウィザードを終了してホームページにリダイレクトしようとしています。HttpResponseRedirect(<homepage>)関数の最後でリダイレクトしようとするとprocess_step、無視されて次のフォームステップに進みます。

4

2 に答える 2

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 に答える
0

HttpResponseDjango が実際に次のステップをレンダリングするには、 return 、 orなどを実行する必要がありますreturn render_to_response。したがって、ほとんどの場合、制御フローは単にHttpResponseRedirect.

于 2012-11-09T17:23:15.107 に答える