Django DRFのImageFieldをresponseとして返したいとき

今回はDjango REST FrameworkでImageFieldをresponseとして返したいときどのようにすれば良いのかについてご紹介いたします。



Django DRFのImageFieldをresponseとして返したいとき

Django REST FrameworkでImageFieldをserializerを介してresponseを返そうとすると、
ImageFieldが代入されているときは
「UnicodeDecodeError: 'utf-8’ codec can’t decode byte 0xff in position 0: invalid start byte」
ImageFieldが代入されていないときは
「ValueError: The " attribute has no file associated with it.」
とエラーが出てresponseとして返されません。

ではどうすればresponseとして返すことができるかというと、例としてImageFieldの属性がtest_image_fieldだった場合、responseの中のdictのtest_image_fieldを

などとstrで囲ってstringに変えてやれば良いだけです。
簡単ですね。

どこにも載っていなかったのでDjangoのshellで試行錯誤して答えにたどりつきました。

終わりに

今回はDjango REST FrameworkでImageFieldをresponseとして返したいときどのようにすれば良いのかについてご紹介いたしました。

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

直接契約ができるフリーランスエージェント「エンハンス」を立ち上げました。
詳しくは下記LPをご参照ください。
https://enhance.decryption.co.jp/

Youtubeチャンネル開設いたしました。
チャンネル登録者10,000人を目指しているので、良いと思った方はチャンネル登録をお願いしたいです。
https://www.youtube.com/channel/UC219XhmSRxmXltTy6COxSMw






Django

Posted by ちこ