Djangoでjsonを送受信する

Djangoでのjsonの送受信についてメモ、送信はいいけど受信は割と忘れそう。

送信

from django.http.response import JsonResponse
 
def jsonSend(request):
    json_data = {"data":{"daat1":"DATA1","data2":"DATA2"}}
    return JsonResponse(json_data)

jsonを送信するには辞書型のオブジェクトをJsonResponseに渡してreruenするだけでOK

受信

from django.http.response import JsonResponse
import json 
def jsonReceive(request):
    json_str = requests.POST["data"]
    json_data = json.loads(json_str)
    json_data["data1"] # "DATA1"
    json_data["data2"] # "DATA2"
    return JsonResponse(json_data)

jsonを受信するには受け取った文字列をjsonとして解釈してあげればあとは辞書型として使える。

注意点

送信の時はたいして問題はないのだが、jsonを受信するときにjQueryのajaxを使うときには送信されてきたデータはrequest.POSTではなくrequest.bodyに入っているので以下のようにする必要がある。

from django.http.response import JsonResponse
import json 
def jsonReceive(request):
    json_str = request.body.decode("utf-8")
    json_data = json.loads(json_str)
    json_data["data1"] # "DATA1"
    json_data["data2"] # "DATA2"
    return JsonResponse(json_data)
  • Python3.6、Django2.0で動作確認済み