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.」というエラーが起きた場合の対処法についてご紹介いたしました。

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






DRF

Posted by ちこ