Django-rest-framework: Buat harus memberikan pengecualian yang jauh lebih berguna ketika TypeError terjadi

Dibuat pada 15 Okt 2015  ·  3Komentar  ·  Sumber: encode/django-rest-framework

Ini adalah kutukan dalam hidupku. Baris 845 di serializers.py perlu diubah agar lebih membantu ketika TypeError memang terjadi.

Jika Anda memiliki metode .save() khusus dan ada yang tidak beres maka DRF hanya memberi Anda pesan pengecualian, yang mungkin berguna seperti "X tidak dapat diubah". Bisakah DRF menyertakan traceback dari TypeError asli atau melakukan _anything_ sedikit lebih berguna daripada mengeluarkan pesan default dan menelan pengecualian asli?

Komentar yang paling membantu

Hai, yang di sana,
Saya sangat ingin membuka kembali masalah ini. Ini benar-benar bagian terburuk tentang menggunakan DRF dalam aplikasi non-sepele. Inilah pengecualian yang saya dapatkan:

TypeError: Got a `TypeError` when calling `Document.objects.create()`. This may be because you have a writable field on the serializer class that is not a valid argument to `Document.objects.create()`. You may need to make the field read-only, or override the DocumentSerializer.create() method to handle this correctly.
Original exception text was: 'SafeText' object is not callable.

Saya membuat Anda mencoba membantu dengan menampilkan teks itu, tetapi sebenarnya Anda menelan seluruh pengecualian yang membuatnya jauh lebih sulit untuk di-debug dan membuang sebagian besar informasi yang sebenarnya berguna. Tolong tolong pertimbangkan MR saya.

Semua 3 komentar

Saya akan dengan senang hati mempertimbangkan permintaan tarik, tetapi sebaliknya tidak mengetahui apa yang harus kita lakukan secara berbeda di sini. Kami menyertakan teks pengecualian asli, tetapi menambahkan sedikit konteks tambahan untuk menjelaskan mengapa teks tersebut dimunculkan. Tidak tahu apakah kami dapat (atau ingin) mempertahankan traceback asli.

Saya telah membuat PR, saya pikir Anda harus menampilkan traceback asli dalam pesan. Sejujurnya saya pikir Anda tidak boleh menangkap pengecualian sama sekali, tetapi saya kira pesan yang dimodifikasi mungkin bermanfaat bagi pengguna baru. Namun itu menelan informasi kesalahan penting tanpa alasan nyata, yang harus diubah.

Hai, yang di sana,
Saya sangat ingin membuka kembali masalah ini. Ini benar-benar bagian terburuk tentang menggunakan DRF dalam aplikasi non-sepele. Inilah pengecualian yang saya dapatkan:

TypeError: Got a `TypeError` when calling `Document.objects.create()`. This may be because you have a writable field on the serializer class that is not a valid argument to `Document.objects.create()`. You may need to make the field read-only, or override the DocumentSerializer.create() method to handle this correctly.
Original exception text was: 'SafeText' object is not callable.

Saya membuat Anda mencoba membantu dengan menampilkan teks itu, tetapi sebenarnya Anda menelan seluruh pengecualian yang membuatnya jauh lebih sulit untuk di-debug dan membuang sebagian besar informasi yang sebenarnya berguna. Tolong tolong pertimbangkan MR saya.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat