2015-12-06 192 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 –