2013-04-02 62 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)