【问题标题】:Can't correctly receive data in Django from Ajax无法从 Ajax 正确接收 Django 中的数据
【发布时间】:2020-11-23 19:52:07
【问题描述】:

我想从 jquery/Ajax 请求中接收 Django 视图中的数组数据,但由于某种原因,我无法正确地做到这一点。 这是一段js代码:

    var arr = [1, 2];
    $.ajax({
        type: 'POST',
        url: '/go/',
        data: {arr: arr},
        success: function (data) {
        console.log('Success!');
        },
    });

这是来自 Django 的观点:

def go(request):
  if request.method == 'POST':
    arr = request.POST['arr']

它给了我KeyError: 'arr'

如果我在 Django 中执行print(request.POST),它会像这样打印它:<QueryDict: {'arr[]': ['1', '2']}>。 'arr' 键后出现一些方括号。然后,如果我使用带方括号的键执行arr = request.POST['arr[]'],它会分配arr2,所以只有数组的最后一个值。有人可以向我解释为什么会这样吗?

【问题讨论】:

    标签: jquery django ajax


    【解决方案1】:

    密钥的名称是'arr[]',因为它包含一个数组,因此您可以通过以下方式访问它:

    def go(request):
      if request.method == 'POST':
        arr = request.POST.getlist('arr[]')

    您需要使用.getlist(…) [Django-doc] 来检索所有值,因为不同的元素都作为单独的键值项传递。

    【讨论】:

    • 谢谢!这正是我所需要的。
    【解决方案2】:

    您正在传递一个列表,因此需要使用 getlist 方法来检索数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-21
      • 1970-01-01
      • 2016-11-15
      • 2016-04-08
      • 1970-01-01
      • 2019-02-17
      相关资源
      最近更新 更多