Django 在根文件夹中找不到“/media/image.png”

Posted

技术标签:

【中文标题】Django 在根文件夹中找不到“/media/image.png”【英文标题】:Django cannot find "/media/image.png" when placed in root folder 【发布时间】:2021-06-06 08:28:21 【问题描述】:

我有以下结构

my app/
|_my_app/
|  |_templates/
|_static/
|_media/
|_utils/
|_main.py
|_manage.py
|_.gitignore

并拥有template.html

<img src="./media/image.png"> 然后它会抛出 GET 404 错误Cannot find /media/image.png

我也尝试过相对路径(相对于模板,即<img src="../../media/image.png">

将媒体文件夹移动到静态(包括% load static % 我可以这样做

<img src="% static '/media/image.png'">

没有任何问题。

    为什么第一部分找不到./media/image.png? 有没有办法使用另一个标签(例如 media)来执行“静态”技巧,例如 <img src="% media 'image.png' "> 以避免绝对路径?

【问题讨论】:

您必须在设置和 urls.py 中添加 MEDIA_ROOT 和 MEDIA_URL。 您需要手动编写 url 的事实意味着这不是用户媒体。这意味着这是一个静态图像。然后把它放在你的静态文件夹中。 Biplove,我已经添加了这些,它不会工作 您是要显示上传的内容还是静态内容? @CutePoison 检查这个问题What is the difference between static files and media files in Django? 【参考方案1】:

您可以在静态文件夹中创建一个名为 img 的新文件夹,然后将您的图像粘贴到 img 文件夹中,这样图像的路径将如下所示: 静态 -> img -> image.png。您可以像这样在 HTML 中加载图像:

<img src="% static 'img/image.png'">

【讨论】:

这正是我目前正在做的解决方法 - 问题是,为什么我不能在根目录中放置一个名为 media 的文件夹,然后使用 scr="media/img.png"

以上是关于Django 在根文件夹中找不到“/media/image.png”的主要内容,如果未能解决你的问题,请参考以下文章

在根项目中找不到 Android Studio 0.8 任务组合

Flutter:在根项目“android”中找不到任务“assembleStageDebug”

在根项目“网关”中找不到任务“bootRepackage”

在根项目中找不到任务“publishApkRelease”

在根项目中找不到任务“publishApkRelease”

Android Studio 构建失败,“在根项目‘MyProject’中找不到任务’。”