You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django项目图片加载404:终端链接有效但页面无法显示

Django图片加载404问题排查与解决

问题描述

页面无法加载图片,终端返回404错误:

Not Found: /auctions/static/auctions/images/Artboard_1_copy.png
"GET /auctions/static/auctions/images/Artboard_1_copy.png HTTP/1.1" 404 3417

但本地工作区可正常打开该图片。

核心问题分析

你混淆了静态文件与媒体文件的用法:ImageField存储的是用户上传的动态媒体资源,不应放到静态文件目录;同时项目缺少媒体文件的必要配置,导致Django无法正确解析图片路径。


具体修复步骤

1. 修正models.py的ImageField配置

upload_to需设置媒体文件的相对路径,而非静态文件路径:

image = models.ImageField(upload_to="auctions/images", blank=True)

修改后,上传的图片会自动存入MEDIA_ROOT/auctions/images目录。

2. 在settings.py中添加媒体文件配置

在静态文件配置下方添加:

# 媒体文件配置
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

此配置用于告诉Django媒体文件的访问URL和本地存储路径。

3. 更新urls.py的路由配置

保留原有静态文件路由,新增媒体文件的开发服务路由:

from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    path("", views.index, name="index"),
    path("<int:id>", views.item, name="item"),
    path("listing", views.Listing, name="listing"),
    path("login", views.login_view, name="login"),
    path("logout", views.logout_view, name="logout"),
    path("register", views.register, name="register")
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) \
  + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

4. 修正HTML模板的图片引用

使用{{ listing.image.url }}获取正确的媒体文件URL:

{% if listing.image %}
<img class="image1" src="{{ listing.image.url }}">
{% endif %}

添加{% if %}判断可避免图片字段为空时出现无效URL。

5. 迁移图片到正确目录

将原图片从auctions/static/auctions/images手动移动到media/auctions/images,或重新上传图片到系统中。


内容的提问来源于stack exchange,提问作者user23814829

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 09:43:24