在Django中显示模型中的图像

时间:2016-03-30 09:42:08

标签: python django image templates imagefield

我试图弄清楚如何用图像解决这个问题,但我无法找到答案。我正试图展示一个“ImageField”#39;我的模型到模板。

我已经通过管理网站上传了一张图片,当我想要显示它时,我无法正确渲染图像(它看起来像是一个图标但无法看到图像)。

我试图显示图像的模型有ImageField的这个声明:

figure = models.ImageField(upload_to='static/img/list-icons',
                               blank=True,
                               null=True,
                               verbose_name=_("Figure"))

成为' upload_to' path存储图像的静态文件目录的路径。我尝试使用此代码在模板中获取图像(我尝试了几种组合):

{% for quiz in quiz_list %}

            <tr>
              <td>{{ quiz.title }}</td>
              <td>{{ quiz.category }}</td>
              <td><img src="{{ quiz.figure.url }}" /></td>
              <td>{{ quiz.single_attempt }}</td>
            </tr>

        {% endfor %}

该模型是测验(ListView),我没有改变views.py的任何内容(最近刚刚添加了图像字段)。是否需要添加一些陈述?什么样的?

我在'MEDIA_ROOT'中添加了settings.py的仅仅近似,以及我的静态图片目录的路径(与模型中的upload_to相同),我也不是确定如何定义或是否有必要定义'MEDIA_URL'

我如何直接从模型中显示图像(我也尝试了{{quiz.figure}}但是刚刚显示了“upload_to”路径),从它们所在的静态目录中选择它们?非常感谢帮助,谢谢。我将回答添加所需的附加信息。

编辑1:现在捕获的内容就是:

Capture of what it outputs

我的urls.py文件以这样结束:

+ static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

我认为现在需要让CSS正常工作。

1 个答案:

答案 0 :(得分:1)

您没有正确渲染图像。

你应该替换

<td><img src="quiz.figure.url" /></td>

<td><img src="{{ quiz.figure.url }}" /></td>

<强>更新: 您的项目urls.py似乎没有媒体网址条目。在项目网址中,执行以下操作:

from django.conf import settings
from django.conf.urls.static import static
...
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

另外,请确保在settings.py中定义了适当的设置

# Media files
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'