Django-rest-framework: 閲覧可能なAPIを使用してデータを投稿した場合、hhtpieを使用して投稿した場合、request.POSTは空のquerydictです。

作成日 2016年04月11日  ·  4コメント  ·  ソース: encode/django-rest-framework

チェックリスト

  • [x]その問題がDjangoRESTフレームワークのmasterブランチに対して存在することを確認しました。
  • [x]オープンチケットとクローズドチケットの両方で同様の問題を検索しましたが、重複が見つかりません。
  • [x]これは使用法の質問ではありません。 (代わりに、ディスカッショングループに転送する必要があります。)
  • [x]これはサードパーティのライブラリとして扱うことはできません。 (可能な場合は、新しい機能をサードパーティのライブラリの形式にすることをお勧めします。)
  • [x]問題を可能な限り単純なケースに減らしました。
  • [x]プルリクエストとして失敗したテストを含めました。 (それができない場合でも、問題を受け入れることができます。)

    再現する手順

ステップ1 。 データがapiviewに投稿されたら、POSTquerydictをpprintします。

@api_view(['GET'、 'POST'])
def snippet_list(request):
if request.method == 'POST':
pprintからpprintをppとしてインポートします
pp(request.data)
pp(request.POST)
シリアライザー= SnippetSerializer(data = request.data)
serializer.is_valid()の場合:
serializer.save()
Response(serializer.data、status = status.HTTP_201_CREATED)を返します
Response(serializer.errors、status = status.HTTP_400_BAD_REQUEST)を返します

ステップ2 。 '{"code": "print123"}'を閲覧可能なAPIからsnippet_list apiviewに投稿します。

予想される行動

両方のpprintの結果: {u'code': u'print 12dgdf3'}
<QueryDict: {}>

実際の動作

両方のpprintの結果: {u'code': u'print 12dgdf3'}
{u'code': u'print 12dgdf3'}

最も参考になるコメント

mybad ..form-dataのみがrequest.POSTで利用可能です

正解です、うん。 request.dataを使用します。

全てのコメント4件

mybad ..form-dataのみがrequest.POSTで利用可能です。HttpPOSTを使用して送信されたデータはすべてrequest.POSTにあると想定しました。 この問題を閉じる、tnx

mybad ..form-dataのみがrequest.POSTで利用可能です

正解です、うん。 request.dataを使用します。

誰かが公式の答えを見つける場所に興味がある場合:

https://www.django-rest-framework.org/tutorial/2-requests-and-responses/#request -objects

POSTが空である理由はまだわかりません。 :(
チュートリアルやリンクはありますか?

このページは役に立ちましたか?
0 / 5 - 0 評価