首页 > 解决方案 > 如何在 Django 中的多步表单向导中创建一个选择按钮,以呈现输出而不进行下一步?

问题描述

我是 Django 新手,我正在使用django-formtools. 问题是,在我的第 2 步表单中,我需要在后端传递选择字段以执行一些计算,然后呈现输出。用户可以根据输出随时进行更改。如果用户决定完成选定的更改,我制作了一个apply changes应该触发后端进程的按钮和一个按钮。proceed to next step但是,当我单击apply changes按钮时,它会引导我进入下一步。

这是我的HTML代码:

<form action="" method="POST">
  {% csrf_token %}
  {{ wizard.management_form }}
  {% if wizard.form.forms %}
      {{ wizard.form.management_form }}
      {% for form in wizard.form.forms %}
          {{ form }}
      {% endfor %}
  {% else %}
      {{ form }} # three selection fields
      <button name="apply_changes">Apply Changes</button>
  {% endif %}

  {% if wizard.steps.prev %}
      <button name="wizard_goto_step" type="submit" value="{{ wizard.steps.prev }}">{% trans '&#8249; Previous Step' %}</button>
  {% endif %}
  <input type="submit" value="{% trans 'Finish' %}"> 
</form>

这是我的SessionWizardView方法代码片段:

def get_context_data(self, form, **kwargs):

  context = super(StepWizard, self).get_context_data(form=form, **kwargs)

  if self.steps.current == 'step_1':
    # save step 1 data to sessions

  if self.steps.current == 'step_2':
    step1_data = self.get_all_cleaned_data()
    # if apply changes button is clicked
      data = self.request.POST.get('apply_changes')
      # process data
      # add output to context
  return context

我需要有关如何正确完成的帮助。提前致谢!

标签: djangodjango-formsdjango-formwizarddjango-formtools

解决方案


因此,对于遇到与我相同问题的未来 django 开发人员,这是我的问题的答案:

1) 验证第 2 步中的数据,这暂时是我的选择字段的默认值;和 2) 使用向导功能覆盖post加载当前页面的方法goto_step并将其嵌入到apply changes按钮中

你可以在这里找到指南:)

然后就行了!一旦用户单击apply changes按钮,页面就会重新加载,并且输出会呈现在表单中。

仍然需要优化它:D


推荐阅读