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

如何在Django中通过Ajax传递列表并在视图中获取列表类型数据

解决Django视图接收Ajax列表为字符串的问题

方法一:前端直接传递数组(推荐)

直接将数组作为参数传递,jQuery会自动将其转换为P_list=X&P_list=Y&P_list=Z的格式,后端使用getlist()方法即可直接获取列表类型数据。

修改后的index.html

<script>
   ...
   var provinces_list = []
   var obj = document.getElementById('objectSelected');
   for (var i=0; i<obj.length; i++) {
        provinces_list.push(obj.options[i].value)
   }

   $.ajax({
      method: "GET",
      data: {
         'P_list': provinces_list  // 移除JSON.stringify,直接传数组
      },
      url: '{% url '...' %}',
      dataType: 'json',
      success: function (context) {
        ...
      }
   })
</script>

对应的view.py

provincesList = request.GET.getlist('P_list')
# 此时provincesList为列表类型:['X', 'Y', 'Z']

方法二:后端解析JSON字符串

如果必须通过JSON字符串传递(比如需要传递嵌套结构数据),可以使用Python的json模块将字符串解析为列表。

view.py

import json

provincesList_str = request.GET.get('P_list')
provincesList = json.loads(provincesList_str)
# 解析后得到列表类型:['X', 'Y', 'Z']

两种方法对比

  • 方法一更符合HTTP GET请求的参数传递规范,后端处理逻辑更简洁直观,适合简单列表场景。
  • 方法二适合传递复杂数据结构(如嵌套数组、对象),但需要额外的JSON解析步骤。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 00:00:07