這里假設你是通過models的ImageField上傳圖片,并期望在前臺img標簽中能顯示。能否訪問圖片關鍵在于,是否能通過正確的路徑訪問。
在models.py中有image如下
1
|
image = models.ImageField(upload_to='images/%Y/%m', verbose_name='文件縮略圖') |
在顯示頁面中如show.html中使用img標簽顯示
1
|
< img class = "center-block thumbnail" src = "{{result.object.image.url }}" alt = "" /> |
不過這里{{result.object.image.url}}只是讀取出了上面模型upload_to下面的路徑,并不能真正顯示出來。要在模板中顯示,還需要在urls.py和settings.py配置
下一步,在你的urls.py中配置如下:
1
2
3
4
5
6
7
8
9
|
from django.conf.urls import include, url from django.conf import settings from django.conf.urls.static import static urlpatterns = [ '''你的其他url配置''' ] urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) |
setttings.py中配置 MEDIA_URL 和 MEDIA_ROOT,這里定義了media相關配置,也就是定義了模型中ImageField里的參數(shù)upload_to所在目錄
1
2
|
MEDIA_URL = '/media/' MEDIA_ROOT = os.path.join(BASE_DIR, 'media') |
到此,我們能夠正確訪問通過ImageFields上傳的圖片,下面是官方文檔上面的一些說明
具體的相關文檔
在模型中調用FileField 或 ImageField (見下方) 需如下幾步:
在你的settings文件中, 你必須要定義 MEDIA_ROOT 作為Django存儲上傳文件的路徑(從性能上考慮,這些文件不能存在數(shù)據(jù)庫中。) 定義一個 MEDIA_URL 作為基礎的URL或者目錄。確保這個目錄可以被web server使用的賬戶寫入。
在模型中添加FileField 或 ImageField 字段, 定義 upload_to參數(shù),內容是 MEDIA_ROOT 的子目錄,用來存放上傳的文件。
數(shù)據(jù)庫中存放的僅是這個文件的路徑 (相對于MEDIA_ROOT). 你很可能會想用由Django提供的便利的url 屬性。比如說, 如果你的ImageField 命名為 mug_shot, 你可以在template中用 {{ object.mug_shot.url }}獲得你照片的絕對路徑。
例如,如果你的 MEDIA_ROOT設定為 ‘/home/media',并且 upload_to設定為 photos/%Y/%m/%d。 upload_to的'%Y/%m/%d‘被strftime()所格式化;'%Y' 將會被格式化為一個四位數(shù)的年份, ‘%m' 被格式化為一個兩位數(shù)的月份'%d'是兩位數(shù)日份。如果你在Jan.15.2007上傳了一個文件,它將被保存在/home/media/photos/2007/01/15目錄下.
以上這篇Django1.9 加載通過ImageField上傳的圖片方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。
原文鏈接:https://blog.csdn.net/sherlockzoom/article/details/51910171