在Django表单中访问变量

时间:2016-02-10 15:01:42

标签: django django-forms django-formwizard

我遇到的问题是如何在表单中显示一些其他文本, 特别是上一步的值。关键是要向用户显示一条消息,例如“您已选择{{value_from_step_0}}作为入门者,现在选择主要课程。”

我可以从步骤0获得该值,如下所示:

class MenuWizard(SessionWizardView):
    def get_form_kwargs(self, step=None):
        kwargs = {}
        if step == '1':
            starter = self.get_cleaned_data_for_step('0')['starter']
            kwargs.update({'starter': starter})

class MainCourseForm(forms.Form):
    def __init__(self, *args, **kwargs):
        starter = kwargs.pop('starter')
        print "{0} chosen".format(starter) # This works
        super(DomainForm, self).__init__(*args, **kwargs)
        # What next?

如果我没有弹出'starter'值,则超级调用失败。但是,我怎样才能将这个价值纳入相关模板?大概我需要在 init 中做一些事情或者覆盖别的东西,但是什么?

1 个答案:

答案 0 :(得分:2)

首先,请注意1.7不受支持,表单向导已从1.8中的Django中删除,现在位于第三方formtools库中。

这不是表单的工作,而是视图。 SessionWizardView是一个标准的基于类的视图,与大多数基于类的视图一样,它允许您覆盖get_context_data以向模板内容添加元素。请参阅the documentation,其中有一个使用self.steps.current检查当前步骤名称的示例。