【问题标题】:Show an image from models in Django在 Django 中显示来自模型的图像
【发布时间】:2016-03-30 09:42:07
【问题描述】:

我试图弄清楚如何用图像解决这个问题,但我找不到答案。我正在尝试将我的模型的“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: 它现在输出的内容是这样的:

Capture of what it outputs

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

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

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

【问题讨论】:

    标签: python django image templates imagefield


    【解决方案1】:

    您没有正确渲染图像。

    你应该替换

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

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

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

    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/'
    

    【讨论】:

    • 谢谢,刚刚修好了,但输出还是一样...我应该在 settings.py 中使用 'MEDIA_ROOT' 或 'MEDIA_URL' 进行管理吗?
    • 输出是什么?你的 urlpatterns 中有媒体 url 吗?
    • 我已经编辑了第一篇文章,媒体网址是什么意思?我只是普通的 url 配置模式,当我在模型中添加图像字段时没有改变任何东西。它应该在 urls.py 中有路径或其他内容吗?谢谢你的回答
    • 是的,要从开发服务器查看媒体文件,您需要在项目 urls.py 中有一个媒体 url 条目(就​​像使用静态文件一样)。
    猜你喜欢
    • 2021-05-18
    • 2011-11-17
    • 2015-12-17
    • 1970-01-01
    • 2015-07-17
    • 2017-06-23
    • 1970-01-01
    • 2013-04-24
    相关资源
    最近更新 更多