You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现多提交按钮对应不同URL的表单?

实现多提交按钮指向不同URL的表单

不需要必须在服务端统一处理,有两种前端实现方案:

方案一:用HTML5原生formaction属性(最简单)

HTML5给提交按钮新增了formaction属性,能直接指定当前按钮对应的提交目标URL,优先级会覆盖表单本身的action设置。

修改后的代码如下:

<form method="post">
    {% csrf_token %}
    {{ form }}
    <input type="submit" value="Process form with view ONE" formaction="/view-one/">
    <input type="submit" value="Process form with view TWO" formaction="/view-two/">
    <input type="submit" value="Process form with view THREE" formaction="/view-three/">
</form>

提示:如果你的项目需要兼容IE9及更早版本,这个属性不支持,建议用下面的JS方案。

方案二:JavaScript动态修改表单action

通过监听提交按钮的点击事件,临时修改表单的目标URL后再提交,兼容性覆盖所有浏览器。

代码示例:

<form id="multi-action-form" method="post">
    {% csrf_token %}
    {{ form }}
    <input type="submit" value="Process form with view ONE" data-action="/view-one/">
    <input type="submit" value="Process form with view TWO" data-action="/view-two/">
    <input type="submit" value="Process form with view THREE" data-action="/view-three/">
</form>

<script>
const form = document.getElementById('multi-action-form');
const submitButtons = form.querySelectorAll('input[type="submit"]');

submitButtons.forEach(button => {
    button.addEventListener('click', function(e) {
        e.preventDefault(); // 阻止默认提交行为
        form.action = this.dataset.action; // 替换表单目标URL
        form.submit(); // 手动触发表单提交
    });
});
</script>

额外注意事项

  • 无论用哪种方案,都要保留{% csrf_token %},避免Django的CSRF验证失败。
  • 如果想用<button>标签代替<input>,两种方案同样适用,比如:<button type="submit" formaction="/view-one/">Process form with view ONE</button>

内容的提问来源于stack exchange,提问作者Tarquinius

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 17:31:07