Как получить мастер формы django extra_context для отображения в шаблоне? - PullRequest
3 голосов
/ 15 ноября 2011

РЕДАКТИРОВАТЬ: 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}}

и т.д ..

Ответы [ 2 ]

5 голосов
/ 15 ноября 2011

Глядя на документы , я бы сказал, что get_context_data - это то, что вам нужно:

Возвращает контекст шаблона для шага.Вы можете перезаписать этот метод, чтобы добавить больше данных для всех или некоторых шагов.Этот метод возвращает словарь, содержащий визуализированный шаг формы.

2 голосов
/ 15 ноября 2011

Итак, что я использовал в шаблоне:

{{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 ()», всегда == 0, что сделало мой «if step == 1:» логический сбой ...

После просмотра источника (django.contrib.formtools.wizard.FormWizard) одна вещь, которая выглядит так, как будто она может не сработать, - моя форма недопустима. Он должен быть действительным, чтобы номер шага увеличивался и вызывал функцию process_step. ОДНАКО переменная {{step}} получает правильное значение. И я не делаю ничего сумасшедшего с формой ...

Так странно. Но мой главный вопрос решен.

...