我的django视图中有一个AJAX请求调用(使用JQuery)。它发送以查看此类数据:
{"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
返回空数组。
如何从请求中接收字典数组?
答案 0 :(得分:2)
确保您的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库)json
的{{1}}方法:
loads()
答案 1 :(得分:1)
将数据转换为json字符串。
并像
一样接收它data = json.loads(request.POST)
答案 2 :(得分: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']
答案 3 :(得分:0)
在AJAX请求中,请确保包含标题:
content-type: application/json
然后,如果你像我一样使用Python 3,在Django View中:
def my_view(request):
received_json = json.loads(request.read().decode('utf-8'))
products_priority = received_json['products_with_priority']
答案 4 :(得分:0)
如果您要将POST
数据发送为jQuery (raw) data
,则可以body
作为string
访问该数据。您可以从中JSON
加载它。希望下面的例子可以帮助你。
def my_view(request):
data = json.loads(request.body)
city_id = data.get('cityId')
products_priorities = data.get("products_with_priority")