1. ホーム
  2. python

Django 1.6 で HTTP POST リクエストを使用して json データを受信する方法は?

2023-10-24 08:44:06

質問

私は Django 1.6.

私はいくつか投稿したい JSON をHTTP POSTリクエストで投稿したいのですが、私は学習のためにこのタスクのためにDjangoを使用しています。

私は使用しようとした request.POST['data'] , request.raw_post_data , request.body などがありますが、どれもうまくいきません。

私のviews.pyは

import json
from django.http import StreamingHttpResponse
def main_page(request):
    if request.method=='POST':
            received_json_data=json.loads(request.POST['data'])
            #received_json_data=json.loads(request.body)
            return StreamingHttpResponse('it was post request: '+str(received_json_data))
    return StreamingHttpResponse('it was GET request')

JSONデータを投稿する際に リクエスト モジュールを使っています。

import requests  
import json
url = "http://localhost:8000"
data = {'data':[{'key1':'val1'}, {'key2':'val2'}]}
headers = {'content-type': 'application/json'}
r=requests.post(url, data=json.dumps(data), headers=headers)
r.text

r.text はメッセージと投稿されたデータを表示するはずですが、私はこの単純な問題を解決することができません。

どのように解決するのですか?

あなたはここで、フォームエンコードとJSONデータを混同しています。 request.POST['foo'] はフォームエンコードされたデータ用です。あなたは生のJSONを投稿しているのですから、その場合は request.body .

received_json_data=json.loads(request.body)