django - 确定在Django表单提交中单击了哪个提交按钮

标签 django django-forms django-views

在Django中,我希望有一个带有2个提交按钮选项的表单。 “保存并保存”和“保存并保存”。

有什么想法可以确定在我的 View 中单击了哪个提交按钮?

我对编程/使用表单还很陌生,并感谢您的反馈。

表格

<form action="{% url 'price_assessment_section_1' component.id %}" method="post"> {% csrf_token %}

 {{ form.s1_q5_resin_type }}

 <!-- FORM SUBMIT BUTTONS-->

 <button type="submit" >&nbsp;Save&Home</button>

 <button type="submit" >&nbsp;Save&Next</button>

</form> <!-- end form-->

查看
@login_required
def price_assessment_section_1(request, component_id):

    component = Component.objects.get(id=component_id)

    if request.method == 'POST':
        form = PriceAssessmentSection1(request.POST)

                # if "save & home" go to: return HttpResponseRedirect(reverse('portal_home'))

                # if "save & next" go to: return HttpResponseRedirect(reverse('portal_sec2'))

    form = PriceAssessmentSection1()
    return render(request, 'portal/price_assessment_section_1.html', {'form': form, 'component':component})

最佳答案

您可以给他们起名字。仅单击的按钮将其数据与提交一起发送。在您的模板中为其指定适当的名称:

<button type="submit" name="save_home" value="Save&Home">&nbsp;Save&Home</button>
<button type="submit" name="save_next" value="Save&Next">&nbsp;Save&Next</button>

在相关部分的 View 中,您可以通过选中按钮的名称来检查单击了哪个按钮。
if request.method == 'POST':
    form = PriceAssessmentSection1(request.POST)
    if request.POST.get("save_home"):
        return HttpResponseRedirect(reverse('portal_home'))
    elif request.POST.get("save_next"):  # You can use else in here too if there is only 2 submit types.
        return HttpResponseRedirect(reverse('portal_sec2'))

关于django - 确定在Django表单提交中单击了哪个提交按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21505255/

相关文章:

python - Celery 异步任务和定期任务一起使用

python - update() 抛出 TypeError : serializer. update() 得到意外的关键字参数 'data'

Django 。如何减少每次使用后的优惠券总数

python - 使用 post_save 信号或执行 View 中的逻辑有什么区别

python - 聊天应用程序。对于 Django

python - 如何从 python 和 rust 存储和读取 redis 中的公共(public)数据?

python - Django Rest 创建嵌套对象(ManyToMany)

python - 如何在模板中引用函数的结果? Django

python - 覆盖 Django-allauth 中的 clean_email() 方法

django - 每个用户如何在 django 中的同一个表上获取增量和唯一 id