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

Django如何从HTML模板传值到Python函数并按按钮触发对应视图

Django表单多按钮提交实现方案

第一步:修改HTML模板代码

首先需要给三个提交按钮添加相同的name属性,后端才能识别用户点击了哪个按钮,修改后的模板代码如下:

<form method="POST" action="">
    {% csrf_token %}

    <input type="text" name="name_id" placeholder="placeholder value"/>

    <input type="submit" name="submit_type" value="Value 1"/>
    <input type="submit" name="submit_type" value="Value 2"/>
    <input type="submit" name="submit_type" value="Value 3"/>
</form>

第二步:配置应用下的urls.py

不需要为三个按钮单独配置路由,所有提交请求都走同一个处理接口即可,示例配置如下:

from django.urls import path
from . import views

urlpatterns = [
    # 你现有的其他路由
    path('form-process/', views.form_process, name='form_process'),
]

如果表单页面就是该路由返回的,form标签的action属性可以留空;否则请把action改为{% url 'form_process' %}。

第三步:编写views.py处理逻辑

在视图函数中先获取输入框内容和提交按钮的value值,再分支执行对应函数即可:

from django.shortcuts import render

# 自定义的三个功能函数,按需修改内部逻辑
def func1(input_content):
    print(f"执行函数1,接收参数:{input_content}")

def func2(input_content):
    print(f"执行函数2,接收参数:{input_content}")

def func3(input_content):
    print(f"执行函数3,接收参数:{input_content}")

def form_process(request):
    # GET请求直接返回表单页面
    if request.method == "GET":
        return render(request, 'file.html')
    
    if request.method == "POST":
        # 获取输入框内容,默认值为空字符串
        input_content = request.POST.get('name_id', '')
        # 获取点击的提交按钮的value
        submit_btn = request.POST.get('submit_type', '')

        # 按按钮值分支执行对应函数
        if submit_btn == "Value 1":
            func1(input_content)
        elif submit_btn == "Value 2":
            func2(input_content)
        elif submit_btn == "Value 3":
            func3(input_content)
        
        # 处理完成后的返回逻辑按需修改,可改为重定向、返回JSON等
        return render(request, 'file.html', {'tip': '操作完成'})

注意事项

  • 若输入框为必填项,可自行添加非空校验逻辑,避免空值传入函数
  • 若需要保留用户上次输入的内容,返回渲染页面时把input_content传到模板,赋值给输入框的value属性即可
  • 三个功能函数如果涉及数据库操作、文件读写等逻辑,可自行补充异常捕获处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 18:15:03