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

Django开发:如何获取模板中被点击提交按钮对应的post主键值

解决方案

最简便的实现方式是调整模板中按钮的属性设置,核心逻辑利用了HTML表单的原生特性:提交表单时仅会将被点击的submit按钮的键值对传入请求参数。

第一步:修改template模板代码

把所有提交按钮的name属性设为同一个固定值,将按钮对应的主键存到value属性中:

{% for post in posts %}
   <button name="clicked_post_pk" value="{{ post.pk }}" type="submit">{{ post.title }}</button>
{% endfor %}

第二步:views中直接获取主键

你不需要再逐一判断键是否存在,直接通过固定的name取值即可:

# 直接拿到被点击按钮对应的主键
post_pk = request.POST.get('clicked_post_pk')
# 后续可直接用这个pk查询对应对象执行业务逻辑,建议加合法性校验避免恶意请求
if post_pk:
    try:
        target_post = Post.objects.get(pk=post_pk)
        # 执行你的对应操作
    except Post.DoesNotExist:
        # 处理pk无效的异常情况

备选方案(不修改模板的情况)

如果你不想调整现有模板代码,也可以直接提取request.POST的键,但要注意该方案仅适用于你的表单中没有其他input字段的场景:

# 取POST参数的第一个键即为被点击按钮的name,也就是对应post的主键
if request.POST:
    post_pk = next(iter(request.POST.keys()))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 09:36:06