utamaro’s blog

誰かの役に立つ情報を発信するブログ

Djangoのテンプレート内でcloudinaryのディレクトリを指定して画像を表示する

Djangoを使って、cloudinaryで保存している画像を表示する場合、{% cloudinary %}を使用します。

その際に、ファイル名を指定することができるのですが、ファイル名のみだとディレクトリ分けしていた場合表示されません。

そこでなんとかディレクトリを指定して、画像を表示したいと思いました。

そこで取った方法が以下の書き方です。

{% cloudinary public_id crop="fill/dir" class="is-rounded" %}

これで出力されるurlは以下のようになります。

http://res.cloudinary.com/hqarhdoek/image/upload/c_fill/dir/image_name

ポイントはcrop部分です。

もともとはcropの値はfillだけで、その場合のurlは以下のようになります。

http://res.cloudinary.com/hqarhdoek/image/upload/c_fill/imange_name

ちなみに、folder="dir"としてもだめでした。

問題点

widthやheightを指定する場合、以下のようなurlになります。

'https://res.cloudinary.com/demo/image/upload/c_fill,h_150,w_100/sample.jpg' 

すると、fill/dirのようになってもうまく動きません。

あくまでもファイル名の前の区切りがフォルダとしなければなりません。

その場合は、おとなしくサーバーサイドでファイル名をつくりましょう。

herokuに上げて動作を確認してると、imageが404になったりしたので、この方法は間違っているのかもしれません。

その検証はしてなくて、他のバグを直してるときについでに解決していたので未検証です。

ただ、ローカルでは動いていたのでいまいち原因がわかってないです。