2013-02-20 72 views
0

我無法在模板中顯示圖像。這是我的代碼:模板中的圖像不顯示

settings.py

MEDIA_ROOT = os.path.join(DIRNAME, 'media') 

MEDIA_URL = '' 

STATIC_ROOT = os.path.join(DIRNAME, 'static') 

STATIC_URL = '/static/' 

# Additional locations of static files 
STATICFILES_DIRS = (
    os.path.join(DIRNAME, 'my_static'), 
) 
在我的模型

photo = models.ImageField(upload_to='media/images') 

在網站源(按Ctrl + U在Firefox):

<img class="preview_image" src="static/images/test_1.png" ale="photo" /> 

如何顯示正確的圖像?

+0

嘗試添加第一個斜槓,即'src =「/ static/images/test_1.png」' – stalk 2013-02-20 09:47:15

+0

不起作用。如果我嘗試127.0.0.1:8000/static/images/test_1.png - >找不到頁面(404) – user2090552 2013-02-20 09:49:08

+0

如何將圖像文件url放在模板中? – Rohan 2013-02-20 09:51:50

回答

1

更改MEDIA_URL這樣的:

MEDIA_URL = '/media/' 

然後改變upload_to參數是這樣的:

photo = models.ImageField(upload_to='images') 

添加到您的urls.py

from django.conf import settings 
urlpatterns += patterns('', 
    url(r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT, 'show_indexes': True}), 
) 

然後在訪問上傳的圖片你的模板如下:

<img src="{{ picture.photo.url }}"> 
+0

謝謝。這個url conf很好 – user2090552 2013-02-20 10:52:42

+0

樂意幫忙... :) – arulmr 2013-02-20 11:08:04

0

開始通過改變MEDIA_URL -

MEDIA_URL = '/media/' 

然後改變upload_to參數模型上的

photo = models.ImageField(upload_to='images') 

添加圖片文件夾到您MEDIA_ROOT目錄(我不知道哪裏是我不知道你的DIRNAME變量是什麼)

/path/to/your/media_root/images 

現在您可以訂閱AY在模板照片時使用 -

{% your_object.photo.url %} 

不要在你的模板不硬編碼網址 -

<img class="preview_image" src="static/images/test_1.png" ale="photo" /> 

應該是 -

<img class="preview_image" src="{% your_object.photo.url %}" ale="photo" /> 

看一看上ImageField的文檔和serving static files

當你保存你的模型(附圖)時,照片上傳到<MEDIA_ROOT>/<upload_to>。然後通過http從http://localhost:8000/<MEDIA_URL>/<upload_to>提供服務。但是,由於您將照片保存在模型中,因此數據庫會保留對文件位置的引用,允許您使用<img src="{% object.photo.url %}">加載圖像。