【问题标题】:Image paths in Django view are relative to directory instead of MEDIA_URLDjango 视图中的图像路径是相对于目录而不是 MEDIA_URL
【发布时间】:2018-04-26 19:04:28
【问题描述】:

我已经为这个问题苦苦挣扎了几天,无法自己解决。我在一个博客网站上工作。帖子视图在 URL 上呈现,例如:

domain.com/blog/specificpost/

我的模型中有一个 ImageField。图片上传正确,我可以在正确的 URL 上处理图片。

domain.com/media/asset.jpg

在我的 settings.py 中,我定义了媒体路径。当我从管理员访问图像文件时,它们可以正常工作。

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

在渲染帖子的视图时,图像路径在 DOM 中渲染不正确。它是:

domain.com/blog/media/asset.jpg

应该是:

domain.com/media/asset.jpg

在我的 urlpattern 中我附加了:

+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

并将相关导入添加到 urls.py。我相信这段代码应该在development 期间提供域根目录下的文件。

我已经尝试了here 的所有解决方案,但图像 URL 仍然相对于目录呈现。任何帮助我走上正确道路的帮助都会很有用,非常感谢。

帖子模板:

{% extends "base.html" %}

{% block journal_entry %}
    <main class="content">
        <section class="photo">
            <img src="{{ object.image }}">
        </section>
        <section class="entry">
            <section class="entry-content">
                {{ object.body|linebreaks }}
            </section>
            <section class="entry-meta">
                {{ object.created }}<span class="user-options"> • <a href="#">Delete</a></span>
            </section>
        </section>
    </main>
{% endblock %}

【问题讨论】:

  • 可以添加视图的模板吗?
  • @MrName 已添加,谢谢。

标签: python django url-pattern imagefield


【解决方案1】:

尝试在您的模板中使用{{ object.image.url }} 而不是{{ object.image }}

【讨论】:

  • 这非常有效。没有意识到您必须具体了解 ImageField 的输出。我知道这将是一个简单的错误,只是无法理解我所缺少的东西。感谢您的帮助,非常感谢。
  • 不用担心,我认为当你引用字段本身(而不是 URL 属性)时会发生什么,它使用了类的 __str__ 方法,这是一个相对 URI,而不是url 字段,这是一个完整的 URL。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-03-08
  • 1970-01-01
  • 2018-10-10
  • 2021-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多