何らかの理由で、Djangoがrequest.body
コンテンツを正しく処理しない理由を理解できません。
JSON
形式で送信されており、Dev ToolsのNetwork
タブを見ると、これがリクエストペイロードとして示されています。
{creator: "creatorname", content: "postcontent", date: "04/21/2015"}
これがまさにAPIに送信される方法です。
Djangoには、このリクエストをパラメーターとして受け入れるビューがあり、テスト目的のために、request.body["content"]
をコンソールに出力する必要があります。
もちろん、何も印刷されていませんが、request.body
を印刷すると次のようになります。
b'{"creator":"creatorname","content":"postcontent","date":"04/21/2015"}'
だから、私はdoが送信されていることを知っています。
私もjson = json.loads(request.body)
を使用してみましたが、役に立ちませんでした。変数を設定した後にjson
を印刷しても、何も返されません。
Python 3.0からPython 3.5.xでは、json.loads()
はユニコード文字列のみを受け入れるため、request.body
(バイト文字列)をデコードする必要がありますjson.loads()
に渡します。
body_unicode = request.body.decode('utf-8')
body = json.loads(body_unicode)
content = body['content']
Python 3.6では、 json.loads()
はバイトまたはバイト配列を受け入れます 。したがって、request.body
をデコードする必要はありません(UTF-8、UTF-16、またはUTF-32でエンコードされていると仮定)。