2015-12-06 178 views
0

我有一個模型,其中有一個ImageField但在模板中沒有出現。圖像的上載行(在MEDIA_ROOT /一個/ image.jpg的)Django模板不顯示ImageField

Settings.py:

MEDIA_URL = '/media/' 
MEDIA_ROOT = os.path.join(BASE_DIR, "media_root") 

Urls.py

(...) 
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) 
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 
urlpatterns += staticfiles_urlpatterns() 

Models.py

class myModel1(models.Model): 
__(...) 
__image = models.ImageField(upload_to='one', default="") 
__(...) 

而且在我的模板,我有這樣的:

<img src="{{ myModel1.image.url }}" alt="{{ myModel1.name }} image" /> 

而關於HTML是這樣的:

(...)**src="/media/one/photo_p33Mo8a.jpg"**(...) 

但不顯示圖像

錯誤找不到404:

GET http://localhost:8000/media/one/photo_p33Mo8a.jpg 404 (NOT FOUND) 

有人可以幫助我嗎?

PD:對不起,我第一次寫在stackOverFlow上。

必須評論在media_root/one /中出現圖像,但文件夾/ media /仍然是空的。

文件夾結構: Proyect:
___app_folder
________media
________ models.py ....
___media_root
________one
____________ image.jpg的
___ mainFolder(設置,網址..)
___ static_root(...)

+1

你應該表現出你的Django項目 – doru

+0

@Karramarro Gorri''從方法static'的文件夾結構,當你有'DEBUG'設置爲TRUE; django.conf.urls.static'才起作用。您是否啓用了調試模式? –

+0

是的,我有DEBUG = True。靜態文件(如圖像,..)工作。但媒體給出了問題。 :| –

回答

1

嘗試在tremplate:

<img src="{{ MEDIA_URL }}{{ myModel1.image }}" alt="{{ myModel1.name }} image" /> 

*編輯

看來你必須在你的urls.py文件中加入:

from django.conf import settings 
from django.views.static import serve 

# ... the rest of your URLconf goes here ... 

if settings.DEBUG: 
    urlpatterns += [ 
     url(r'^media/(?P<path>.*)$', serve, { 
      'document_root': settings.MEDIA_ROOT, 
     }), 
    ] 

EDIT2

您的ROOT_MEDIA路徑應該是:

MEDIA_ROOT = os.path.join(os.path.dirname(BASE_DIR), "media_root") 
+0

我做到了,但它不起作用。 Thx發佈 –

+0

Nope:S。現在它創建另一個目錄:Before:media_root/one/image.jpg和now media_root/one/one/image.jpg。並沒有工作:( –

+0

是的,我做了。奇怪的是,在HTML img src出現'/media/one/image.jpg',但無法找到它:S –