Python のフレームワークで JSON のデータを送受したいことがあり、記述に困ったのでメモとして残しておきます。
同じように困っている人の助けになれば幸いです。
JSON をクライアントへ送信
“Data” というのはデータ保持しているクラスです。いわゆるモデルです。
from django.http.response import JsonResponse
def api(request):
    ary = []
    data = Data.objects.all()
    for d in data:
        ary.append( {"id" : "%d" % d.id, "name": d.text })
    
    return JsonResponse( {"data":ary})
JSON を受け取る
django 側が JSON を受け取る場合です。以下のコードでは受け取ったものを表示しているだけになります。
import json
from django.views.decorators.csrf import csrf_exempt
@csrf_exempt
def api2(request):
    b = request.body
    data = json.loads(b)
    return HttpResponse( data )
以下のように curl からテストをした際に CSRF 関連でエラーとしてはじかれるため、CRSF 無効にするデコレータをつけています。
$ curl 'url' -d '{"data" : "hello"}' -H 'Content-Type:application/json' -x POST
       
  
  
  
  
