# views.py def myapi(request): data = { 'name': 'Alice', ... } return HttpResponse(simplejson.dumps(data), mimetype='application/json')
設好 urls.py 後 (/myapi/), 就能用 jQuery 的 $.ajax 輕鬆地 call /myapi/ 取得 JSON ( callback function 的參數會是 JavaScript object, 不用再呼叫 JSON.parse )。為了減少出錯的機會, 我將 ajax 的參數 aysnc 設為 false。
回傳值是 JSON 有許多好處, 除方便用 AJAX 拿資料外, 也方便寫 unit test:
class MyApiTest(django.test.TestCase): data = { ... } response = self.client.post('/myapi/', data) self.assertEqual(200, response.status_code) expected = { ... } self.assertEqual(expected, simplejson.loads(response.content))
附帶一提, 有人寫了個 decorator 將一般的 view 轉成回傳 json, 目前沒這需求, 留著備忘。
沒有留言:
張貼留言