2016-10-14 59 views
0

我想知道是否有一個字段(模型字段),代表遠程圖像Django - 是否有遠程圖像字段

我需要的是將圖像字段添加到我的模型中,該圖像字段不是本地存儲的,而是提供了一個遠程URL,只能被查看,不能編輯或上傳。

編輯:爲了讓自己更清楚,我的意思是,我需要一個領域,如URLField可以存儲一個URL(在圖像),但在管理頁面(或其他形式),它會顯示出圖像像ImageField一樣。

回答

1

的Django有一個file storage API。默認存儲類是FileSystemStorage,它使用文件系統存儲您的圖像。

關於Django最好的事情之一是其巨大的生態系統:您可以找到S3和其他熱門託管服務的存儲類。

也有點容易寫自己的。

+0

這是否意味着我可以編寫一個'ImageField'類字段,使用非FileSystemStorage的存儲? (另外,是否有遠程圖像存儲?) –

+0

是的,例如,您可以編寫一個存儲類,使用paramiko將圖像存儲在使用SSH的另一臺主機上。請參閱https://github.com/jschneier/django-storages/blob/master/storages/backends/sftpstorage.py –

0

您可以使用URLField來存儲源URL並處理查看圖像django您構建的視圖,我可以想象,您的django View可以使用您的模型(包括圖像源URL)讀取數據,並將其設置爲上下文字典對象,可以從視圖的HTML模板中讀取以顯示圖像。

請閱讀有關django視圖和模板的更多信息。

+0

請更新您的答案,並鏈接到您推薦的相關文檔。嘗試包括一個正在使用的URLField的例子。 – Soviut

+0

有沒有辦法讓Django自動在表單域和管理頁面上顯示圖像的縮略圖,就像'ImageField'一樣? –

+0

你需要替換'widget',但這是一個全新的問題。 – Soviut

1

A URLFieldCharField的擴展,可以存儲指向圖像的有效URL。請注意,您將無法上傳圖片,只能引用網絡上已存在的圖片。

my_instance = MyModel() 
my_instance.remote_image = 'http://example.com/images/example.jpg' 
my_instance.save() 

您可以通過設置src屬性顯示在你的模板遠程圖像:

class MyModel(models.Model): 
    remote_image = models.URLField() 

在你看來,你可以用一個字符串來設置遠程圖像

<img src="{{ my_instance.remote_image }}"> 
+0

有沒有辦法讓Django在表單域和管理頁面自動顯示圖像的縮略圖,比如'ImageField'呢? –

+0

你需要替換'widget',但這是一個全新的問題。 – Soviut

相關問題