2013-04-02 28 views
19

DjangoビューでImageField絶対パスを取得しようとしていますので、イメージを開いて何かを書いてから、ユーザーに提供します。Django:ビュー内のImageField URLを取得

メディアフォルダに保存されている画像の絶対パスを取得できません。

item = get_object_or_404(Item, pk=pk) 
absolute_url = settings.MEDIA_ROOT + str(item.image.path) 

私はitem.imageパス(The 'banner' attribute has no file associated with it.)を持っていないこと、エラーが発生します。 item.imageはImageFieldであり、イメージフィールドに保存されたイメージの絶対パスを取得する方法を知りたいです(Djangoビュー内)。

答えて

28

正しく設定すると、.urlitem.image.urlを使用してください。ドキュメントhereを確認してください。

+3

私がする.urlを使用してみましたが、それは動作しません...それはテンプレートではなくビューで動作します:/ – Byteme

+0

たぶんそれは私が拡張HVEことが原因ですImageFieldをBannerFieldに...しかし、私が行ったことは、上書きされたクリーンメソッドです。 – Byteme

+0

@ user2225675イメージファイルはどのように管理していますか? 'item.image'には相対ファイルがありません。おそらく、アップロードの設定が間違っているか、テンプレートとビューで異なるアイテムを試しているのでしょうか? – okm

2

参照してください。

例(ビュー):

item = Item.objects.get(pk=1) 
print item.file # prints out full path of image (saved in media folder) 
関連する問題