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

如何在Django中获取for循环生成的所有用户输入值

问题修复方案

问题根因

  • 前端所有输入框name属性重复,且未和对应部门ID做关联,无法区分输入值所属的部门记录
  • 后端读取POST参数的key(BUID、GBUID)和前端输入框定义的name属性(value1、value2)完全不匹配,无法读取到正确的提交值
  • 缺少完整的<form>标签包裹提交内容,也没有添加Django POST请求必填的CSRF token,请求会被默认拦截

修复后的模板代码

<form method="post">
    {% csrf_token %}
    <input type="submit" value="Submit" >

    {% for department in departments %}
    <!-- 隐藏域传递当前循环的部门ID,保证值和部门一一对应 -->
    <input type="hidden" name="department_ids[]" value="{{ department.id }}">
    <div class="row">
      <div class="col-sm-3">
      <label>value1</label>
        <input name="value1[]" class="form-control" />
      </div>
    </div>
    <br />
    <div class="row">
      <div class="col-sm-3">
      <label>value2</label>
        <input name="value2[]" class="form-control" />
      </div>
    </div>
    {% endfor %}
</form>

修复后的views.py代码

def department(request):
    departments = Department.objects.all()
    # 仅处理POST提交请求
    if request.method == "POST":
        # 按模板渲染顺序获取所有部门ID、value1、value2,三者顺序完全对应
        department_ids = request.POST.getlist('department_ids[]')
        value1_list = request.POST.getlist('value1[]')
        value2_list = request.POST.getlist('value2[]')
        
        # 遍历匹配更新对应部门记录
        for dept_id, v1, v2 in zip(department_ids, value1_list, value2_list):
            Department.objects.filter(id=dept_id).update(value1=v1, value2=v2)
            # 验证输出
            print(f"部门ID{dept_id}更新成功:value1={v1},value2={v2}")

    context = {'departments': departments}
    return render(request, 'employee/department.html', context)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 14:54:05