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

Django模板for循环渲染的心愿单条目仅可删除第一项如何解决

问题原因
  • 核心问题是HTML元素ID全局重复:你在for循环中给所有删除表单设置了固定ID upvote1,而DOM规范要求同一页面内ID必须唯一。document.getElementById('upvote1') 只会匹配到页面中第一个出现该ID的元素,因此只有第一个条目能正常触发提交。
修改方案

只需要给每个表单绑定唯一ID,同时对应修改删除按钮的提交逻辑即可,有两种常用实现方式:

方式1:用游戏ID拼接唯一ID(更直观,推荐)

修改循环内删除按钮和表单的代码如下:

<!-- 修改删除按钮的提交目标ID -->
<a href="javascript:{document.getElementById('upvote{{i.oyunlar.game_id}}').submit()}" class="btn-remove" title="Favorilerden Çıkar"><i
        class="icon-retweet"></i></a>
<!-- 给每个表单设置和当前游戏绑定的唯一ID -->
<form id="upvote{{i.oyunlar.game_id}}" method="POST" action="{% url 'favhome' i.oyunlar.game_id %}">
        {% csrf_token %}
</form>

方式2:用循环序号拼接唯一ID

如果担心游戏ID存在特殊字符不适合作为ID值,也可以用Django模板自带的循环序号变量forloop.counter:

<!-- 修改删除按钮的提交目标ID -->
<a href="javascript:{document.getElementById('upvote{{forloop.counter}}').submit()}" class="btn-remove" title="Favorilerden Çıkar"><i
        class="icon-retweet"></i></a>
<!-- 给每个表单设置和当前循环序号绑定的唯一ID -->
<form id="upvote{{forloop.counter}}" method="POST" action="{% url 'favhome' i.oyunlar.game_id %}">
        {% csrf_token %}
</form>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 21:36:03