request.POST中的值与预期值不同

时间:2019-02-05 06:06:55

标签: python django django-models django-views

我试图在AJAX调用中将列表作为data参数的一部分传递。该调用本身似乎在Javascript中运行良好,但是在Python中访问QueryDict对象将返回单个整数17,而不是列表[17]

这与Javascript将字符串解释为数字有关系吗?我不知道为什么只有一个元素的列表会转换为整数。

# models.py

def mark_shipped(self, request):
    print(request.POST)
    orders = request.POST['orders']
    print(orders)
    for pk in orders:
        try:
            order = Sale.objects.get(pk=pk)
        except ObjectDoesNotExist:
            print(pk)
            return False
        order.shipped = True
        order.date_shipped = timezone.now()
        order.save()
        self.__shipping_confirm(order.email)
    return True

哪个输出:

<QueryDict: {'csrfmiddlewaretoken': ['hc4...I2a'], 'orders': ['17']}>
17
1

预期输出:

<QueryDict: {'csrfmiddlewaretoken': ['hc4...I2a'], 'orders': ['17']}>
[17]

编辑:原来我只需要使用request.POST.getlist('orders')

0 个答案:

没有答案