【问题标题】:Django can't display images saved in media folderDjango 无法显示保存在媒体文件夹中的图像
【发布时间】:2016-07-26 08:42:35
【问题描述】:

我将上传的文件保存在名为 /img/ 的媒体根目录中:

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

并使用此模板显示该文件夹中的每个图像:

{% load staticfiles %}
<ul>
{%  for post in latest_post %}
    <li>{{ post.id }} : {{ post.post_body }} : <img src="{% static "/img/" %}{{ post.post_image }}" alt="{{ post.post_image }}" /> </li>

    {% endfor %}
</ul>

我得到了正确的网址:

http://127.0.0.1:8000/img/birthday.jpg

但是当我打开图像时出现“找不到页面”错误。这是为什么呢?

编辑:我刚刚运行了 manage.py collectstatic 但它并没有解决问题。我仍然收到 404 错误。

【问题讨论】:

  • 您是使用开发服务器还是使用DEBUG=False在生产环境中运行
  • @DanielHepper:开发服务器。我刚刚创建了 staticroot,但它没有复制我的图像文件。
  • 请发布您的 urls.py
  • @Chubak 分配给 settings.py 的 STATIC_URL 和 STATIC_ROOT 变量是什么

标签: python django django-templates


【解决方案1】:

在你的基础目录中创建一个名为 static 的文件夹,并将你所有的 css、img、js 等文件存储在它们各自的文件夹中,如下所示:

.
├── css
├── fonts
├── icons
├── img
└── js

运行 python manage.py collectstatic,这会收集你所有的静态文件并将它们保存在一个 staticroot 文件夹中。

之后将您的 settings.py 更改为以下内容:

STATIC_URL = '/static/'
STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static')),
STATIC_ROOT = 'staticroot/static'

【讨论】:

  • 我现在收到此错误:您的 STATICFILES_DIRS 设置不是元组或列表
  • 无需将任何与静态或媒体文件相关的内容放在 urls.py 中,收集静态文件即可。并将您的根路径定义为:import os ROOT_PATH = os.path.dirname(__file__)
猜你喜欢
  • 2018-10-15
  • 1970-01-01
  • 1970-01-01
  • 2021-10-24
  • 2021-08-17
  • 1970-01-01
  • 2018-02-11
  • 2021-10-12
  • 1970-01-01
相关资源
最近更新 更多