簡體   English   中英

Django 文件存儲:如何獲取媒體文件的基本 url?

[英]Django files storage: How to get base url of media file?

我正在使用包裹在 django-storages 邏輯中的 gcloud。 我從來沒有用我的存儲桶的 url 路徑提供服務:只提供了 DEFAULT_FILE_STORAGE 和 GS_BUCKET_NAME,它們是我的 glcoud 項目和存儲的名稱。

我的問題是:如何獲取圖像的完整網址? 我的圖像使用相對 url 保存,這使得 sens 進入數據庫。 但是我找不到任何關於如何獲取對象存儲的 django.core.files.storage 集合的基本 url 的正確文檔。

一些文件存儲對象要求有效的相對圖像 url 以檢索完整路徑。 但這不是我想要的:我只想(以編程方式)知道我的(只有一個)存儲桶的基本 url。 模板{% image item.image %}能夠生成完整的 url,但從代碼方面來看,它對我來說似乎完全模糊。

任何幫助或建議?

獲取完整 URL 比獲取前綴並加入由某些端點存儲的 URL 的相關部分更容易。

Django 文件存儲后端的基類是Storage 這個類有一個url方法,很可能會在任何物有所值的雲存儲后端中實現:

網址(名稱)
返回可以訪問按名稱引用的文件內容的 URL。 對於不支持通過 URL 訪問的存儲系統,這將引發 NotImplementedError。

因此,只需在您的 API 中序列化此方法的結果即可。 例如,如果您的模型已經序列化為名為“data”的字典,您可以使用以下方法將“圖像”字段從相對更新為絕對:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM