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

如何在Django中获取循环渲染的多复选框选中值?

解决Django后端获取多选复选框值的问题

前端代码调整

你当前的模板渲染逻辑没问题,但要确保所有复选框使用同一个name属性,这样后端才能正确收集多个选中值。代码可以保持原样(name为superuser),也可以显式写成superuser[](两种方式Django都支持):

{% for group in groups %}
  <tr>
    <td>{{ group.name }}</td>
    <td>
      <input type="checkbox" name="superuser" id="group-{{ group.id }}" value="{{ group.id }}">
    </td>                                             
  </tr>
{% endfor %}

后端获取选中值的两种方式

函数视图中获取

在Django函数视图里,用request.POST.getlist()方法就能拿到所有选中的复选框值,它会返回一个包含所有选中ID的列表:

from django.http import HttpResponse

def submit_group_form(request):
    if request.method == 'POST':
        # 获取所有选中的分组ID
        selected_group_ids = request.POST.getlist('superuser')
        # 示例:转为整数类型(如果需要操作数据库)
        selected_group_ids = [int(gid) for gid in selected_group_ids]
        # 后续可以做查询,比如获取选中的分组对象
        # selected_groups = Group.objects.filter(id__in=selected_group_ids)
        return HttpResponse(f"选中的分组ID:{selected_group_ids}")

类视图中获取

如果用类视图(比如View或FormView),逻辑类似,通过self.request.POST.getlist()获取:

from django.views import View
from django.http import HttpResponse

class GroupSelectionView(View):
    def post(self, request):
        selected_group_ids = request.POST.getlist('superuser')
        # 处理业务逻辑
        return HttpResponse(f"选中的分组ID:{selected_group_ids}")

关键提示

  • 模板里必须加{% csrf_token %}标签,否则表单提交会触发CSRF验证错误。
  • 如果没选中任何复选框,getlist()会返回空列表,不会抛出异常,处理起来更安全。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 05:50:41