Django视图中的图像路径是相对于目录而不是MEDIA_URL

时间:2017-11-13 23:57:58

标签: python django url-pattern imagefield

我几天来一直在努力解决这个问题而无法自己解决这个问题。我正在写博客网站。帖子视图以网址呈现,例如:

domain.com/blog/specificpost/

我的模型中有 ImageField 。图片正确上传,我可以使用正确的网址处理图片。

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,但图像网址仍然相对于目录呈现。非常有用,非常感谢你帮助我设置正确的路径。

发布模板:

{% 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 %}

1 个答案:

答案 0 :(得分:3)

尝试在模板中使用{{ object.image.url }}代替{{ object.image }}