在 Django 中显示来自模型的图像
Show an image from models in Django
我想弄清楚如何用图像解决这个问题,但我找不到答案。我正在尝试将我的模型 'ImageField' 显示到模板。
我通过管理站点上传了一张图片,当我想显示它时,我无法正确渲染图片(它出现了一个图标,但看不到图片)。
我试图从中显示图像的模型对 ImageField 有以下声明:
figure = models.ImageField(upload_to='static/img/list-icons',
blank=True,
null=True,
verbose_name=_("Figure"))
作为 'upload_to' 路径是存储图像的静态文件目录的路径。我正在尝试使用此代码获取模板中的图像(我尝试了几种组合):
{% 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 %}
模型是 Quiz(ListView),我没有更改 views.py
的任何内容(最近刚刚添加了图像字段)。是否需要添加一些声明?什么样的?
我在 settings.py
中添加了 'MEDIA_ROOT'
的近似值,以及我的静态图像目录的路径(与模型中的 upload_to 相同),我也'我不确定如何定义或是否有必要定义 'MEDIA_URL'
.
如何直接从模型中显示图像(我也试过 {{quiz.figure}}
但只显示了 'upload_to' 路径),从它们所在的静态目录中选择它们?帮助将不胜感激,谢谢。我会回答添加所需的附加信息。
编辑 1: 它现在输出的内容就是这样:
我的 urls.py 文件结尾是这样的:
+ static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
我认为需要 CSS 像现在这样正常工作。
您没有正确渲染图像。
你应该更换
<td><img src="quiz.figure.url" /></td>
和
<td><img src="{{ quiz.figure.url }}" /></td>
更新:
您的项目 urls.py 中似乎没有媒体 url 条目。在项目 urls 中,执行此操作:
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/'
我想弄清楚如何用图像解决这个问题,但我找不到答案。我正在尝试将我的模型 'ImageField' 显示到模板。
我通过管理站点上传了一张图片,当我想显示它时,我无法正确渲染图片(它出现了一个图标,但看不到图片)。
我试图从中显示图像的模型对 ImageField 有以下声明:
figure = models.ImageField(upload_to='static/img/list-icons',
blank=True,
null=True,
verbose_name=_("Figure"))
作为 'upload_to' 路径是存储图像的静态文件目录的路径。我正在尝试使用此代码获取模板中的图像(我尝试了几种组合):
{% 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 %}
模型是 Quiz(ListView),我没有更改 views.py
的任何内容(最近刚刚添加了图像字段)。是否需要添加一些声明?什么样的?
我在 settings.py
中添加了 'MEDIA_ROOT'
的近似值,以及我的静态图像目录的路径(与模型中的 upload_to 相同),我也'我不确定如何定义或是否有必要定义 'MEDIA_URL'
.
如何直接从模型中显示图像(我也试过 {{quiz.figure}}
但只显示了 'upload_to' 路径),从它们所在的静态目录中选择它们?帮助将不胜感激,谢谢。我会回答添加所需的附加信息。
编辑 1: 它现在输出的内容就是这样:
我的 urls.py 文件结尾是这样的:
+ static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
我认为需要 CSS 像现在这样正常工作。
您没有正确渲染图像。
你应该更换
<td><img src="quiz.figure.url" /></td>
和
<td><img src="{{ quiz.figure.url }}" /></td>
更新: 您的项目 urls.py 中似乎没有媒体 url 条目。在项目 urls 中,执行此操作:
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/'