2013-02-20 54 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 %}">加载图像。