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でのシェアOKです。
コメントもお待ちしております。
誤植や勘違いなどございましたらコメント欄にて教えていただけると幸いです。






Django

Posted by ちこ