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

Django数据库图片渲染失败求助:新页面仅图片无法显示

Django 数据库图片渲染404问题解决方法

核心问题修正

你的HTML中直接使用{{ m.card_img }}获取图片路径,这会输出相对路径(比如images/ht7.jpg),和当前页面URL(/hotels/)拼接后变成/hotels/images/ht7.jpg,但实际上传的图片存储在/media/images/目录下,导致404错误。

步骤1:修正HTML图片路径

将HTML中的图片标签修改为:

<img src="{{ m.card_img.url }}">

ImageField对象的.url属性会返回完整的媒体文件URL(比如/media/images/ht7.jpg),确保请求路径正确。

必要配置检查

步骤2:确认settings.py媒体配置

确保项目settings.py中已正确配置媒体文件路径:

import os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

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

MEDIA_ROOT指定上传文件的本地存储目录,MEDIA_URL是访问这些文件的URL前缀。

步骤3:配置项目urls.py

在项目根目录的urls.py中添加媒体文件路由,让开发服务器能正确返回媒体文件:

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

urlpatterns = [
    # 你的现有路由,例如:
    # path('admin/', admin.site.urls),
    # path('hotels/', views.hotels),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

注意:该路由仅在DEBUG=True的开发环境下生效,生产环境需通过Nginx/Apache等服务器直接处理媒体文件请求。

其他说明

其他页面能正常显示图片,大概率是因为那些图片是通过{% static %}标签加载的静态文件,静态文件的路径规则和上传的媒体文件不同,所以之前的写法没有暴露问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 05:17:18