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

Django教育网站Class模型上传视频无法渲染求助

解决Django中视频无法渲染的问题

你当前的问题是直接在模板中输出FileField对象,这只会显示文件名,要实现视频渲染,需要做以下两步:

1. 修改模板代码,使用HTML5 video标签

将模板中直接输出视频的代码替换为HTML5的<video>标签,通过{{ object.classes.video.url }}获取视频的完整访问路径:

{% extends "class/base.html" %}
{% load crispy_forms_tags %}
{% block content %}
  <h1>{{ object.title }}</h1>
  {% if object.classes.video %}
    <video width="640" height="360" controls>
      <source src="{{ object.classes.video.url }}" type="video/mp4">
      <!-- 可添加其他格式的source以兼容更多浏览器 -->
      <source src="{{ object.classes.video.url }}" type="video/webm">
      你的浏览器不支持HTML5视频播放
    </video>
  {% else %}
    <p>暂无课程视频</p>
  {% endif %}
{% endblock content %}
  • controls属性会显示播放、暂停等操作控件
  • 多添加<source>标签可兼容不同视频格式,浏览器会自动选择支持的格式
  • 用{% if %}判断视频是否存在,避免空值报错

2. 确保媒体文件访问配置正确

Django默认不会自动处理上传的媒体文件请求,需要在项目中配置媒体文件的路径和路由:

在settings.py中添加媒体配置

# settings.py
from pathlib import Path

BASE_DIR = Path(__file__).resolve().parent.parent

# 媒体文件存储根目录,上传的视频会存到该目录下的class/class_videos子文件夹
MEDIA_ROOT = BASE_DIR / 'media'
# 媒体文件的访问URL前缀
MEDIA_URL = '/media/'

在主项目的urls.py中添加媒体路由

# 主urls.py
from django.conf import settings
from django.conf.urls.static import static
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    # 你的其他应用路由,比如课程相关路由
    path('class/', include('class.urls')),
]

# 开发环境下启用媒体文件服务(生产环境请用Nginx等专业服务器托管媒体文件)
if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

完成以上配置后,重启Django服务,上传的视频就能在课程详情页正常渲染并播放了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 06:25:27