Django,视图从请求中获取字典列表

3

我有一个使用JQuery进行的AJAX请求调用,请求我的django视图。它会向视图发送这种类型的数据:

{"cityId": 1, "products_with_priority": [{"id": 1, "priority": 1}, {"id": 2, "priority": 2}, {"id": 3, "priority": 3}, {"id": 4, "priority": 4}, {"id": 5, "priority": 5}]}

在我的Django视图中,我正在尝试以以下方式获取此列表:
def my_view(request):
    city_id = request.POST.get('city_id')
    products_priorities = request.POST.getlist("products_with_priority")

city_id返回1,而products_with_priority返回空数组时。

如何从请求中接收字典数组?


2
尝试这样写:request.POST.getlist("products_with_priority[]") - pkuphy
你是如何通过jQuery发送数据的,是作为form还是data - Sathish Kumar VG
作为 data,@SathishKumarVG - Mr.D
5个回答

4

请确保您的dataType为json,并将数组转换为字符串:

dataType: 'json',
data: {'cityId': 1, 'products_with_priority': JSON.stringify([{"id": 1, "priority": 1}, {"id": 2, "priority": 2}, {"id": 3, "priority": 3}, {"id": 4, "priority": 4}, {"id": 5, "priority": 5}])}

在Django视图中,您可以使用(标准Python库)jsonloads()方法:

products_priorities = json.loads(request.POST.get('products_with_priority'))

1
将数据转换为JSON字符串。
并像这样接收它。
data = json.loads(request.POST)

1
send your data in a json string to django view and then
Try

def my_view(request):
    data = OrderedDict()
    data = json.loads(request.POST)
    city_id = data['city_id']

0
在 AJAX 请求中,请确保您包含了头部信息:
content-type: application/json

如果你像我一样使用Python 3,在Django视图中:

def my_view(request):
    received_json = json.loads(request.read().decode('utf-8'))
    products_priority = received_json['products_with_priority']

0
如果您正在发送POST数据作为jQuery(原始)数据,那么您可以通过body访问它作为string。从中,您可以将其加载为JSON。希望下面的示例能帮助您。
def my_view(request):
    data = json.loads(request.body)
    city_id = data.get('cityId')
    products_priorities = data.get("products_with_priority")

通过django的Client()类无法对request.body进行测试。 - Ahmed

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接