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です。
例としては、下記のような感じです。
1 |
return JsonResponse(data=['test1', 'test2'], safe=False) |
まず表題のエラーがなぜ起こるのかについて説明いたします。
一般的には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.」というエラーが起きた場合の対処法についてご紹介いたしました。
ディスカッション
コメント一覧
まだ、コメントがありません