【问题标题】:Django: Get ImageField url in viewDjango:在视图中获取 ImageField url
【发布时间】:2013-03-23 18:36:42
【问题描述】:

我正在尝试在 Django 视图中获取 ImageField 绝对路径,以便我可以打开图像,在其上写一些东西,然后将其提供给用户。

我无法获取保存在媒体文件夹中的图像的绝对路径。

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 视图中)。

【问题讨论】:

    标签: django view absolute-path imagefield


    【解决方案1】:

    如果配置正确,请使用.urlitem.image.url。查看文档here

    【讨论】:

    • 我尝试使用 .url 但它不起作用.. 它适用于模板但不在视图中:/
    • 可能是因为我已经将 ImageField 扩展到 BannerField 中......但我所做的只是覆盖了 clean 方法。
    • @user2225675 您如何管理图像文件?似乎item.image 缺少其相关文件。可能是由于上传配置错误或您在模板和视图中尝试了不同的项目?
    • 它在模板和视图中是同一个项目。在模板中它显示没有问题。 mnge 图像文件是什么意思?
    【解决方案2】:

    也许是这样?

    @property
    def get_absolute_image_url(self):
        return "{0}{1}".format(settings.MEDIA_URL, self.image.url)
    

    How can I get a list of absolute image URLs from a Django QuerySet?

    【讨论】:

    【解决方案3】:

    我刚刚发现问题出在哪里...绝对图像路径保存在文件变量中。

    示例(在视图中):

    item = Item.objects.get(pk=1)
    print item.file # prints out full path of image (saved in media folder)
    

    【讨论】:

      猜你喜欢
      • 2018-10-16
      • 2023-03-18
      • 2013-09-15
      • 1970-01-01
      • 2013-10-30
      • 2016-06-02
      • 2012-06-12
      • 1970-01-01
      • 2011-09-12
      相关资源
      最近更新 更多