今天我們來談一下Django 1.8.2如何接收J(rèn)SON數(shù)據(jù)。
首先,我們需要在視圖函數(shù)中使用`json.loads`方法將POST請(qǐng)求中的JSON數(shù)據(jù)轉(zhuǎn)化為Python字典。這個(gè)方法可以將JSON轉(zhuǎn)化為Python對(duì)象。對(duì)于GET請(qǐng)求來說,我們可以使用`json.loads(request.GET.get('data', {}))`將查詢字符串中的JSON數(shù)據(jù)轉(zhuǎn)化成Python字典。
代碼如下:
# views.py import json from django.http import HttpResponse def my_view(request): if request.method == 'POST': data = json.loads(request.body.decode('utf-8')) # data 就是 JSON 數(shù)據(jù)轉(zhuǎn)化后的字典對(duì)象 return HttpResponse('POST ok') elif request.method == 'GET': data = json.loads(request.GET.get('data', {})) # data 就是查詢字符串中的 JSON 數(shù)據(jù)轉(zhuǎn)化后的字典對(duì)象 return HttpResponse('GET ok') else: return HttpResponse('Not allowed')接下來,我們需要在客戶端發(fā)送JSON數(shù)據(jù)。對(duì)于jQuery來說,我們可以使用`$.ajax()`方法來發(fā)送POST請(qǐng)求并攜帶JSON數(shù)據(jù)。 代碼如下:
// script.js var data = {'key1': 'value1', 'key2': 'value2'}; $.ajax({ url: '/api/test/', type: 'POST', contentType: 'application/json; charset=utf-8', data: JSON.stringify(data), dataType: 'json', success: function(response) { console.log(response); }, error: function(response) { console.log(response); } });在發(fā)送POST請(qǐng)求時(shí),我們需要設(shè)置`contentType`為`application/json`,并使用`JSON.stringify`方法將要發(fā)送的JSON數(shù)據(jù)轉(zhuǎn)化為字符串。對(duì)于GET請(qǐng)求來說,我們可以使用`$.getJSON()`方法。 這樣,我們就可以在Django中輕松地接收J(rèn)SON數(shù)據(jù)了。