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

如何在Django中从媒体文件夹获取视频?解决404路径问题

解决Django动态渲染媒体文件404问题

1. 先让媒体文件夹在开发环境可访问

Django默认不会自动对外提供媒体文件的访问服务,得手动配置:

  • 先确认settings.py里的核心配置(没加的话补上):
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
  • 再到项目根目录的urls.py里添加媒体文件的路由规则:
from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    # 你的其他路由配置...
    path('myApp/get_media_files/', get_media_files, name="get_media_files"),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

这个配置会让开发环境下的Django自动处理/media/开头的请求,映射到本地的MEDIA_ROOT文件夹。

2. 修正前端JS的路径语法错误

你当前的视频src里多了个多余的单引号,直接导致路径格式失效:

// 错误写法:末尾多了单引号
<video src= "media/${files[i]}' " controls>

// 修正后:
<video src= "/media/${files[i]}" controls>

注意开头要加/,确保是根路径,避免页面嵌套层级导致相对路径出错。

3. 优化后端视图(可选但更稳妥)

可以让后端直接返回完整的媒体文件URL,前端不用手动拼接,减少出错概率:

def get_media_files(request): 
    media_folder = os.path.join(settings.MEDIA_ROOT)
    files = []
    for filename in os.listdir(media_folder):
        # 直接拼接好完整的访问URL
        file_url = settings.MEDIA_URL + filename
        files.append(file_url) 

    return JsonResponse(files, safe=False)

之后前端直接用返回的URL即可:

<video src= "${files[i]}" controls>

4. 最后排查几个细节

  • 确认媒体文件确实存在于MEDIA_ROOT对应的本地文件夹里
  • 修改配置后重启Django开发服务器,新配置才会生效
  • 打开浏览器控制台的Network标签,查看视频请求的具体URL,对比本地文件路径找差异

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 03:52:50