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

Django添加视频无法跳转且出现ConnectionResetError[104]问题求助

解决Django中视频无法跳转播放的问题

我帮你分析下,你遇到的核心问题是Django自带的开发服务器不支持视频播放所需的HTTP字节范围请求(Range Requests)——这直接导致视频只能从头播放、无法跳转;而控制台里的ConnectionResetError,是浏览器尝试请求视频特定片段时,服务器无法处理导致连接重置的伴随现象。

问题根源

Django用static()函数在开发环境中提供的媒体文件服务,没有实现HTTP Range请求的支持。而视频播放器要实现快进、快退、跳转等功能,必须通过Range请求向服务器索要视频的特定字节段,开发服务器处理不了这类请求,自然就没法支持视频跳转。

解决方案

下面提供几个适合开发环境的快速解决方法:

方法1:用Whitenoise处理媒体文件

Whitenoise是轻量级静态文件服务库,原生支持Range请求,很适合开发环境用:

  1. 先安装依赖:
    pip install whitenoise
    
  2. 修改项目settings.py:
    • 在MIDDLEWARE列表里,把whitenoise.middleware.WhiteNoiseMiddleware加到SecurityMiddleware后面:
      MIDDLEWARE = [
          'django.middleware.security.SecurityMiddleware',
          'whitenoise.middleware.WhiteNoiseMiddleware',  # 新增这一行
          'django.contrib.sessions.middleware.SessionMiddleware',
          # ... 其他中间件保持不变
      ]
      
    • 在settings末尾添加配置:
      WHITENOISE_USE_FINDERS = True
      WHITENOISE_AUTOREFRESH = True  # 开发环境自动刷新文件
      WHITENOISE_STATIC_PREFIX = '/static/'
      
  3. 重启开发服务器,视频就能正常跳转了。

方法2:使用django-extensions的runserver_plus

runserver_plus基于Werkzeug服务器,天然支持Range请求:

  1. 安装依赖:
    pip install django-extensions werkzeug
    
  2. 修改settings.py的INSTALLED_APPS,添加django_extensions:
    INSTALLED_APPS = [
        # ... 原有APP
        'django_extensions',
    ]
    
  3. 用以下命令启动服务器:
    python manage.py runserver_plus
    

方法3:生产环境的正确姿势(提前参考)

生产环境里绝对不要用Django直接处理媒体文件,应该用Nginx、Apache这类专业Web服务器,或者云存储服务(比如AWS S3)托管媒体文件——这些服务原生支持Range请求,性能也更靠谱。

额外说明

从你的日志能看出来,视频文件已经能正常加载(返回200状态码),所以模板里的路径配置是没问题的。解决Range请求支持后,控制台的ConnectionResetError也会跟着消失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:52:44