Djangoで「In order to allow non-dict objects to be serialized set the safe parameter to False.」

今回はDjangoで「In order to allow non-dict objects to be serialized set the safe parameter to False.」というエラーが起きた場合の対処法についてご紹介いたします。



Djangoで「In order to allow non-dict objects to be serialized set the safe parameter to False.」

DjangoでJsonResponseを使用してAPIのレスポンスを返そうとしたときに表題のエラーが起きました。

結論から言うと、JsonResponseを使用するときにsafe=Falseを指定してやればOKです。

例としては、下記のような感じです。

まず表題のエラーがなぜ起こるのかについて説明いたします。

一般的にはAPIのレスポンスはdict型が推奨されているようです。
dict型がAPIのレスポンスとして推奨されているのに対し、list型の変数を返そうとすると上記のエラーが発生します。

デフォルトではsafe=Trueですが、safe=TrueのときにAPIのレスポンスとしてlist型の変数を返そうとすると表題のエラーが発生するようです。

よって、JsonResponseを使ってlist型の変数を返したい場合には、JsonResponseの引数にsafe=Falseを指定してやる必要があります。

終わりに

今回はDjangoで「In order to allow non-dict objects to be serialized set the safe parameter to False.」というエラーが起きた場合の対処法についてご紹介いたしました。

【お知らせ】
プログラミングのコンサルタントをすることを考えております。
下記の通り、かなり格安でご用意させていただいております。
【格安】プログラミングコンサル生募集(初心者向け、フリーランス志望向け)

詳しくは下記のリンクをご覧ください。
https://chico-shikaku.com/2020/10/programming-consult-2020/

11月くらいを目処に開始予定です。
最初は募集があれば先着5名くらいを目安に考えております。
質問や意見、問い合わせやお申し込みは下記のリンクよりお願いいたします。
https://docs.google.com/forms/d/e/1FAIpQLSeTXskmlyPAHuhwiOE9togqJPWdhXYCyRoVnFkkbS0VN0Ftug/viewform?usp=sf_link

最後までお読みいただきありがとうございます。
ブログやTwitterでのシェアOKです。
コメントもお待ちしております。
誤植や勘違いなどございましたらコメント欄にて教えていただけると幸いです。






DRF

Posted by ちこ