【问题标题】:How do I get images on html page in django?如何在 django 的 html 页面上获取图像?
【发布时间】:2019-12-09 12:55:52
【问题描述】:

我是 Django 新手。我用 Django 创建了一个网页,现在我在模板上静态加载文件时遇到了问题。我不明白有什么问题,因为如果我只将它放在一个文件夹中它可以工作,但如果我更改该文件夹的目录,它会给我一个404 not found 错误。它看起来像这样:

<img src="/media/{{cat.image_name}}" alt="#" height="350">

这里的“媒体”是我的图像文件所在的文件夹,"{{cat.image_name}}" 是通过数据库传递的该图像的名称,这是有效的。

但是,如果我写

<img src="/admin/public/media/{{cat.image_name}}" alt="#" height="350">

admin&gt;public&gt;media 是我放置图像的位置。

我收到此错误:

Not Found: /admin/public/media/freelancer.jpg [09/Dec/2019 18:23:30] "GET /admin/public/media/freelancer.jpg HTTP/1.1" 404 1852

有人可以帮帮我吗?

【问题讨论】:

  • 什么?为什么你的图片会出现在“admin/public”中?您设置了什么来在该 URL 上提供图片?
  • 您的MEDIA_ROOTMEDIA_URL 设置是什么?你做过this吗?

标签: python django django-templates


【解决方案1】:

Django 将这些文件称为“静态文件”,它们的路径通常包含“静态”。这些是您在源存储库中维护的文件,不会以任何方式由用户或管理员上传:通常是用于 JS/CSS/HTML 布局的所有 JS、CSS 和图像资产。

https://docs.djangoproject.com/en/2.2/howto/static-files/ 上详细记录了如何配置静态文件。

用户/管理员上传的任何文件(动态内容)都放置在通常命名为“媒体”的路径下,如https://docs.djangoproject.com/en/2.2/topics/files/https://docs.djangoproject.com/en/2.2/ref/settings/#std:setting-MEDIA_ROOT 中所述。

在你的情况下:

如果/admin/public/media/ 是本地文件路径,则默认情况下它在您的网络服务器中不可见(这很好)。文件路径!= URL - 这就是为什么有 STATIC_ROOT(文件路径)和 STATIC_URL(url),与 MEDIA_ROOT 和 MEDIA_URL 相同。默认情况下,Django 会注意您在文件路径 STATIC_ROOT 下提供的内容在 STATIC_URL 下可见。如果你不想使用这个机制,你必须自己实现它:

  1. 将文件从文件路径 /admin/public/media 复制到您的网络服务器上且可供网络服务器访问的目录
  2. 实现 URL 路由 - 在 Django 或您的代理(Nginx 或 Apache HTTP)中

对于较大的应用程序,明智的做法是设置 Nginx 或 Apache 网络服务器,以便在运行 ./manage.py collectstatic 时从 Django 放置静态文件的目录中提供静态文件。这些代理提供静态文件的速度比 Django 快得多,而 Django 服务器拥有更多资源来提供动态 (DB) 内容。

【讨论】:

    【解决方案2】:

    Django 静态文件与设置一起使用,如果您不向静态文件目录添加任何路径,它将无法正常工作

    【讨论】:

      猜你喜欢
      • 2020-03-04
      • 2019-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-21
      • 1970-01-01
      相关资源
      最近更新 更多