0

我无法在我的模板中显示图像。这是我的代码:

设置.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')

在网站源中(Firefox 中的 ctrl+U):

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

如何正确显示图像?

4

2 回答 2

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 }}">
于 2013-02-20T10:28:02.140 回答
0

首先更改 MEDIA_URL -

MEDIA_URL = '/media/'

然后更改模型上的 upload_to 参数

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

将图像文件夹添加到您的 MEDIA_ROOT 目录(我不知道那在哪里,因为我不知道您的DIRNAME变量是什么)

/path/to/your/media_root/images

现在您可以使用以下方法在模板中显示照片 -

{% 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服务静态文件的文档。

当您保存模型(带有照片)时,照片会上传到<MEDIA_ROOT>/<upload_to>. 然后通过 http 从http://localhost:8000/<MEDIA_URL>/<upload_to>. 但是,由于您将照片保存在模型中,因此数据库会保留对文件位置的引用,从而允许您使用<img src="{% object.photo.url %}">.

于 2013-02-20T09:55:54.237 回答