1. ホーム
  2. python

Django で POST から `request.body` をパースしようとする [duplicate].

2023-09-20 07:17:21

質問

なぜか、Django が私の request.body を正しく処理できないのかが分かりません。

で送信されています。 JSON 形式で送信され、その 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"}'

ということで、私が知っているのは する が送信されていることがわかります。

を使ってみましたが 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でエンコードされていると仮定しています)。