Django-rest-framework: request.POST adalah querydict kosong ketika data diposting menggunakan api yang dapat dijelajahi, ketika diposting dengan hhtpie .. tidak apa-apa

Dibuat pada 11 Apr 2016  ·  4Komentar  ·  Sumber: encode/django-rest-framework

Daftar periksa

  • [x ] Saya telah memverifikasi bahwa masalah itu ada pada cabang master dari kerangka kerja Django REST.
  • [x ] Saya telah mencari masalah serupa di tiket terbuka dan tertutup dan tidak dapat menemukan duplikat.
  • [x] Ini bukan pertanyaan penggunaan. (Itu harus diarahkan ke grup diskusi sebagai gantinya.)
  • [x] Ini tidak dapat ditangani sebagai perpustakaan pihak ketiga. (Kami lebih suka fungsionalitas baru dalam bentuk perpustakaan pihak ketiga jika memungkinkan.)
  • [x] Saya telah mengurangi masalah menjadi kasus yang paling sederhana.
  • [x] Saya telah menyertakan tes yang gagal sebagai permintaan tarik. (Jika Anda tidak dapat melakukannya, kami masih dapat menerima masalah tersebut.)

    Langkah-langkah untuk mereproduksi

Langkah 1 . Saat data diposting ke apiview , cetak POST querydict.

@api_view(['GET', 'POST'])
def snippet_list(permintaan):
jika request.method == 'POST':
dari pprint impor pprint sebagai pp
pp(permintaan.data)
pp (permintaan.POST)
serializer = CuplikanSerializer(data=permintaan.data)
jika serializer.is_valid():
serializer.save()
kembalikan Respons(serializer.data, status=status.HTTP_201_CREATED)
kembalikan Respons(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

Langkah 2 . Posting '{"code": "print 123"}' dari api yang dapat dijelajahi ke snippet_list apiview.

Perilaku yang diharapkan

hasil dari kedua pprint : {u'code': u'print 12dgdf3'}
<QueryDict: {}>

Perilaku sebenarnya

hasil dari kedua pprint : {u'code': u'print 12dgdf3'}
{u'code': u'print 12dgdf3'}

Komentar yang paling membantu

mybad .. hanya form-data yang tersedia di request.POST

Benar, yup. Gunakan request.data .

Semua 4 komentar

mybad .. hanya form-data yang tersedia di request.POST , saya berasumsi semua data yang dikirim menggunakan Http POST akan ada di request.POST . menutup masalah ini, tnx

mybad .. hanya form-data yang tersedia di request.POST

Benar, yup. Gunakan request.data .

jika seseorang tertarik di mana menemukan jawaban resmi:

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

Saya masih tidak mengerti mengapa POST kosong. :(
Ada tutorial atau linknya?

Apakah halaman ini membantu?
0 / 5 - 0 peringkat