You need to enable JavaScript to run this app. Django模板无法显示上传视频 报错无支持格式与MIME类型
优惠活动
大模型
产品
解决方案
定价
更多

Django模板无法显示上传视频 报错无支持格式与MIME类型

问题根因与修复方案

1. 修正 MEDIA_URL 配置,解决相对路径拼接问题

  • 你当前的 MEDIA_URL = 'media/' 缺少开头的斜杠,会导致Django基于FileField生成的文件URL是相对路径格式
  • 浏览器解析相对路径时,会基于当前页面的URL路径做拼接:当前编辑器页面路径是 /editor/206/,拿到 media/user_3/Test_project/video_file.mp4 这类相对路径后,最终会拼接出请求地址 /editor/206/media/user_3/Test_project/video_file.mp4,这和服务端日志里的404记录完全对应
  • 正确配置要求 MEDIA_URL 以斜杠开头、结尾,保证生成的文件URL是站点根路径下的绝对路径:
# settings.py 修正后的配置
MEDIA_URL = '/media/'  # 必须补充开头的斜杠
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

配置修正后,模板中FileField生成的视频路径会变为 /media/user_3/Test_project/video_file.mp4,浏览器会直接从站点根路径发起请求,不会再触发错误的相对路径拼接。

2. 修正URLconf中媒体路由的参数错误

  • 你当前编写的静态媒体映射存在核心参数传值错误:static() 方法的 document_root 参数要求传入本地文件系统的绝对路径,你错将URL路径 settings.MEDIA_URL 传入,就算路由匹配成功,Django也会因为找不到本地对应路径的文件返回404,这也是日志中出现 Not found: /media 的直接原因
  • 开发环境下正确的媒体路由映射写法如下:
# 项目根目录的urls.py
from django.conf import settings
from django.conf.urls.static import static
from django.urls import path

urlpatterns = [
    # 其他原有路由规则
    path('editor/<int:project_id>/', views.sample_view, name='editor'),
]

# 仅在本地开发模式下追加媒体文件路由映射
if settings.DEBUG:
    # 注意document_root必须传入MEDIA_ROOT(本地文件路径),不是MEDIA_URL
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

3. 完成配置后的验证步骤

  • 直接在浏览器地址栏输入视频的完整绝对路径(例如 http://127.0.0.1:8000/media/user_3/Test_project/video_file.mp4),确认能直接加载、无404错误
  • 回到编辑器页面,打开浏览器开发者工具的网络面板,确认视频请求的状态码为200,请求路径没有被错误拼接
  • 确认视频文件本身编码为浏览器兼容的H.264格式,避免因视频编码不支持触发“No video with supported format and MIME type found”的报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.13 06:45:04