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で動作確認済み