Django无法在页面上显示图像

时间:2015-03-15 14:34:26

标签: python django http-status-code-404

我很想在Django的帮助下尝试在我的数据库中加载一些图像。 加载似乎有效,但是从数据库中取回并在网页上显示它们似乎不起作用。

这里有一些信息:

环境:

的myproject | _forpix(我的应用) | _myproject | _media   | _images     | _mimicry3.png

我有一个base.html,它包含一个内容块“allimages.html”:

{% extends "base.html" %}
{% block content %}
<div id="imagelist">
    {% for image in images %}
    <p><img src="{{MEDIA_ROOT}}{{image.picture.url}}" />{{ image }}</p>
    {% endfor %}
</div>

{% endblock %}

这给了我以下结果: enter image description here

如果我点击其中一张图片:enter image description here

在我的settings.py中,我设置了以下内容:

STATIC_URL = '/static/'

MEDIA_URL = '/media/'

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

TEMPLATE_DIRS = (os.path.join(BASE_DIR, 'templates/'),)

现在我真的不知道如何解决这个问题。 任何人都可以给我一些帮助(不是django教程,我去过那里,尝试过)

我是否必须在urls.py中添加一些内容,尤其是媒体文件?还是别的什么?

如果我需要提供额外信息,请询问。

2 个答案:

答案 0 :(得分:1)

^media/$是一个非常错误的媒体文件正则表达式。您应该从此正则表达式中删除$end-of-the-string)符号。

通常对于开发环境,我在urls.py

中使用此代码段
from django.conf import settings
from django.conf.urls.static import static

urlpatterns = patterns('',
    ...
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

同时从模板代码中删除无用的{{ MEDIA_ROOT }}部分。它应该是:

<img src="{{ image.picture.url }}" />

答案 1 :(得分:0)

此外,您必须添加的行是..

from django.conf import settings
from django.conf.urls.static import static

urlpatterns = patterns('',
    ...
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

但它必须在您的项目文件夹的 urls.py 中。不在您的 App 文件夹的 urls.py 中。我误会了。