Django文件存储:如何获取媒体文件的基本url? [英] Django files storage: How to get base url of media file?

查看:10
本文介绍了Django文件存储:如何获取媒体文件的基本url?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用的是包装在Django-storages逻辑中的gCloud。我从来没有向服务提供过我的存储桶的URL路径:我只提供了默认文件存储和GS_存储桶名称,它们是我的glCoud项目和存储的名称。

我的问题是:如何才能获得我的图片的完整URL?我的图片是用一个相对的URL保存的,这使得Sense进入数据库。但我找不到任何有关如何获取对象存储的django.core.files.store集合的基本url的正确文档。

某些文件存储对象请求有效的相对图像URL以检索完整路径。但这不是我想要的:我只想知道我(只有一个)存储桶的基本URL(通过编程)。模板{% image item.image %}能够生成完整的url,但从代码端的角度来看,它对我来说似乎完全不清楚。

有什么帮助或建议吗?

URL

获取完整的推荐答案比获取前缀并联接某些终结点存储的URL的相对部分更容易。

Django文件存储后端的基类是Storage。此类有一个url方法,很可能在任何值得其薪水的云存储后端实现:

url(名称)
返回可访问名称引用的文件内容的URL。对于不支持按URL访问的存储系统,这将引发NotImplementedError。

所以只需在API中序列化该方法的结果即可。例如,如果您已经将模型序列化为名为"data"的字典,则可以使用以下命令将"Image"字段从相对更新为绝对:

relative_url = data.get("image")
full_url = relative_url and default_storage.url(relative_url)
data.update({"image": full_url})

这篇关于Django文件存储:如何获取媒体文件的基本url?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆