3

ドキュメントを見ていましたが、各ステップで異なるテンプレートを使用する方法がよくわかりません...

ソース コードを調べたところ、テンプレート名がハードコードされているようです。

class WizardView(TemplateView):
    """
    The WizardView is used to create multi-page forms and handles all the
    storage and validation stuff. The wizard is based on Django's generic
    class based views.
    """
    storage_name = None
    form_list = None
    initial_dict = None
    instance_dict = None
    condition_dict = None
    template_name = 'formtools/wizard/wizard_form.html'

...........

ドキュメントにはミックスインについて何か書かれていますが、djangoを始めたばかりなので、それらの使用方法がわかりません...

ありがとう


アップデート:

ソースコードをさらに調べてみると、メソッドがあることに気付きましたget_template_names

私は試した:

class AddWizard(SessionWizardView):
        def get_template_names(self, step):
                if step == 0:
                        return 'business/add1.html'
                return 'business/add2.html'
        def done(self, form_list, **kwargs):
                return render_to_response('business/done.html', {
                        'form_data': [form.cleaned_data for form in form_list],
                })

しかし、エラーが発生しました:

get_template_names() takes exactly 2 arguments (1 given)

4

1 に答える 1

9

get_template_names引数を受け入れません。関数が受け入れる新しい引数を定義して、フレームワークがそれを渡すことを期待することはできません! (今後のトラブルシューティング用)

ソースから判断すると、ビューで使用してステップを含むパスを返すWizardViewことができる現在アクティブなステップにアクセスできるようです。self.steps.currentget_template_names

class AddWizard(SessionWizardView):
        def get_template_names(self):
            return ['step_{0}_template.html'.format(self.steps.current)]

currentが文字列なのか整数なのかわかりませんが、ビューを見ると、「X という名前のテンプレートが見つかりません」という便利なエラーが表示されるはずです。

于 2012-05-07T23:42:29.483 に答える