【问题标题】:Why Django can't find image on this path?为什么 Django 在此路径上找不到图像?
【发布时间】:2020-01-04 09:08:42
【问题描述】:

所以。这是我的第一个 Django 项目。我正在使用 Django Admin 模板来添加/编辑/删除内容。

我添加了将图像添加到特定部分的选项。这是模型

class Project(models.Model):
    title = models.CharField(max_length = 100)
    description = models.TextField()
    technology = models.CharField(max_length = 20)
    image = models.ImageField(upload_to = "projects/images/")

而且它有效。它在 project 目录中创建 images 目录,该目录可以在根目录中找到。

当我在模板中加载图像时,我会加载它

<img src="/{{project.image.url}}" alt="" class="card-img-top">

然后在 HTML 中创建 元素

<img src="/projects/images/106780.jpg" alt="" class="card-img-top">

但是客栈控制台说找不到图片

http://127.0.0.1:8000/projects/images/106780.jpg

我的目录有这个层次结构

portfolio
|
|__ blog
|__ projects
    |__ __pycache__
    |__ images
    |__ migrations
    |__ templates
    |__ ...
|__ venv
|__ db.sqlite3
|__ manage.py

【问题讨论】:

  • 你的 url 模块是什么样子的? Django 不会自动提供项目目录中的文件。
  • 如果你在这里谈论 urlpatterns 他们是urlpatterns = [ path("", views.project_index, name="project_index"), path("&lt;int:pk&gt;/", views.project_detail, name="project_detail") ]
  • 查看此答案以澄清此问题。 stackoverflow.com/a/22776212/9517176

标签: python django


【解决方案1】:

这里你使用静态路径图片

&lt;img src="/{{project.image.url}}" alt="" class="card-img-top"&gt; &lt;img src="/projects/images/106780.jpg" alt="" class="card-img-top"&gt;

您需要使用动态路径,以便服务器可以了解图像的完整路径。

&lt;img src="{% get_media_prefix %}{{project.image.url}}" alt="" class="card-img-top"&gt;

希望这可以解决您的问题。 更多信息请访问官方文档Django version 2.2 - media path

【讨论】:

  • 不,这不是解决方案。我不认为路径本身是问题。该路径上的图像存在,它试图在该路径上找到它。我认为那是 django 无法从路径提供图像,我不知道为什么
  • 因为你还没有做任何事情告诉 Django 提供图像。
猜你喜欢
  • 2017-03-07
  • 2015-01-05
  • 2015-05-06
  • 2014-07-27
  • 1970-01-01
  • 2019-10-24
  • 1970-01-01
  • 2015-03-15
  • 1970-01-01
相关资源
最近更新 更多