django - 如何在 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 '‹ 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
我需要有关如何正确完成的帮助。提前致谢!
解决方案
因此,对于遇到与我相同问题的未来 django 开发人员,这是我的问题的答案:
1) 验证第 2 步中的数据,这暂时是我的选择字段的默认值;和 2) 使用向导功能覆盖post
加载当前页面的方法goto_step
并将其嵌入到apply changes
按钮中
然后就行了!一旦用户单击apply changes
按钮,页面就会重新加载,并且输出会呈现在表单中。
仍然需要优化它:D
推荐阅读
- delphi - 将 TDirect2DCanvas 与 Font Awesome 图标一起使用
- python - 如何使用 Python 替换文本文件的多行中的某些字符?
- cassandra - 如何按 Cassandra 中的二级索引或列对结果进行排序?
- python - 带有可选文本的电话号码正则表达式,在在线工具上运行良好,但在我的代码中却不行
- excel - 对象'_Workbook'的方法'SaveAs'失败
- amazon-web-services - 为什么集群自动扩缩器不能在 AWS EKS 上运行?
- c++ - 错误:构造函数期望和接收不同数量的参数、预期的主表达式错误和没有匹配的函数
- multithreading - 如何为 Akka HTTP 配置特定的调度程序?
- sql - 存储和检索 SQL Azure 的 SQL 管理员密码
- javascript - 如何创建粘性导航栏?