我试图弄清楚如何用图像解决这个问题,但我无法找到答案。我正试图展示一个“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:现在捕获的内容就是:
我的urls.py文件以这样结束:
+ static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
我认为现在需要让CSS正常工作。
答案 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/'