Django如何读取模型中存储的视频文件并在前端模板正常渲染播放
Django前端模板无法播放media目录存储视频的解决方案
按照以下步骤依次排查修改即可解决问题:
- 第一步:修正模板视频路径和语法错误
你当前模板中直接引用{{checklist.video}}只会输出文件的相对存储路径,不会生成完整可访问的URL,需要调用url属性,同时删除重复的</video>闭合标签,修改后的视频部分代码如下:
<video width="320" height="240" controls> <source src="{{ checklist.video.url }}" type="video/mp4"> Your browser does not support the video tag. </video>
- 第二步:确认settings.py中MEDIA配置正确
检查项目的settings.py文件是否配置了MEDIA根路径和访问前缀:
# settings.py MEDIA_URL = '/media/' # 路径对应你项目中存放media文件的根目录,确保和你存储视频的父目录匹配 MEDIA_ROOT = BASE_DIR / 'media'
- 第三步:开发环境配置media文件路由
开发模式下Django默认不会自动托管media目录的文件,需要在项目根目录的urls.py中添加托管配置:
from django.conf import settings from django.conf.urls.static import static urlpatterns = [ # 此处保留你项目原有所有路由配置 ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
注意:该配置仅适用于本地开发环境,生产环境需要通过Nginx等反向代理服务直接托管media目录,不要用Django处理静态资源请求。
- 第四步:验证视频格式匹配
你当前指定的视频解码类型为video/mp4,如果上传的视频不是H.264编码的MP4格式,浏览器会无法解码播放。要么统一要求上传MP4格式视频,要么根据上传文件的后缀动态修改type属性。
修改完成后可以右键页面上的视频元素,复制视频地址直接在浏览器地址栏访问,如果能直接播放说明路径配置正确,否则需要回头检查MEDIA配置和路由。
内容的提问来源于stack exchange,提问作者Rodrigo
相关产品推荐
相关产品推荐

