使用 django-formtool 时如何在模板中表示 initial_dict

Posted

技术标签:

【中文标题】使用 django-formtool 时如何在模板中表示 initial_dict【英文标题】:How to represent initial_dict in template when use django-formtool 【发布时间】:2017-08-01 05:15:45 【问题描述】:

我正在使用 django-formtools,我在上一页中获得了表单数据。

def get_form_initial(self, step):

    if step == '1':
      prev_data = self.storage.get_step_data('0')
      first_name = prev_data.get('first_name','')
      logger.error("***  OUTPUT - prev_first_name *** : " + first_name)

      return self.initial_dict.get(step, 'first_name':first_name)

日志显示 get first_name 已成功。 但我不知道如何显示'first_name'。 请帮我在下一页显示以前的数据。

【问题讨论】:

【参考方案1】:

我自己解决了这个问题。 django-formtool 文档对我来说还不够。

get_form_initial(self, step):我可以通过这个函数获取之前的初始数据,但是对于初始表单数据,我无法将初始数据传递给下一个新表单。

def get_context_data(self, form, **kwargs):这个函数帮助我成功地将数据从前一个表单传递到下一个表单。

我做的正确的事情如下:

--view.py

def get_context_data(self, form, **kwargs):
  context = super(InformationWizard, self).get_context_data(form=form, **kwargs)
  if self.steps.current == '1':
    prev_data = self.storage.get_step_data('0')
    first_name = prev_data.get('first_name','')
    last_name = prev_data.get('last_name','')
    context.update('first_name': first_name, 'last_name': last_name)
  return context

--template.py

...
First Name: first_name Last Name: last_name
...

【讨论】:

以上是关于使用 django-formtool 时如何在模板中表示 initial_dict的主要内容,如果未能解决你的问题,请参考以下文章

使用渲染功能时如何在 Vue.js 模板中定义插槽?

使用 TailwindCSS 时,如何避免模板在渲染列表时将分隔符添加到分隔符?

在进行添加时如何通过使用 c++ 模板来避免临时对象? [关闭]

如何在使用 Nuxt 的 fetch() 挂钩获取数据时防止模板错误

Thinkphp模板开放给第三方编辑权限时,如何禁止模板使用php代码

在 Django 中使用 HttpResponseRedirect 时如何传递模板上下文信息?