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
相关产品推荐
相关产品推荐

