Django视图循环渲染数据库图片时出现404错误求助
Django图片路径显示正确但返回404的解决方法
问题核心
浏览器中显示的图片路径home_page_images/orangeshirt_1ZrO8ay.jpg缺少媒体文件前缀,导致请求指向网站根目录而非Django配置的媒体文件存储路径,因此返回404。
具体解决步骤
1. 修正模板中的图片路径
将模板里的{{d.img}}替换为{{d.img.url}},后者会自动拼接MEDIA_URL前缀,生成完整的可访问路径:
{% for d in data %} <img src="{{d.img.url}}" alt="Third slide"> {% endfor %}
2. 确认settings.py的媒体配置正确
确保settings.py中已正确配置媒体文件的存储根目录和访问前缀:
import os BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) MEDIA_ROOT = os.path.join(BASE_DIR, 'media') MEDIA_URL = '/media/'
3. 验证DEBUG模式与URL路由
- 确认
settings.DEBUG = True(仅开发环境生效),否则urls.py中添加的媒体文件路由不会启用。 - 当前
urls.py的配置无需修改,保持如下即可:
urlpatterns = [ path('',views.index,name='index') ] if settings.DEBUG: urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
4. 检查物理文件是否存在
手动确认项目根目录下的media/home_page_images/文件夹中,确实存在orangeshirt_1ZrO8ay.jpg文件,排除上传过程中文件未成功保存的情况。
内容的提问来源于stack exchange,提问作者Benjamin shtainberg
相关产品推荐
相关产品推荐

