django - 由于添加简单视频,Django不断收到104连接重置,无法转发视频
问题描述
我想将视频添加到我的 django 模板中。当我添加它时,视频无法转发(我无法将此视频跳过到其他点,我只能从头到尾播放)。当我在新的浏览器选项卡中打开视频链接时,会发生同样的问题。
当我关闭/刷新此页面控制台时显示:
[19/Jun/2019 11:22:23] "GET / HTTP/1.1" 200 9386
[19/Jun/2019 11:22:23] "GET /media/audio_and_video/videoplayback_lzlCjOR_Ftjx0GJ.mp4 HTTP/1.1" 200 9431145
[19/Jun/2019 11:22:24] "GET / HTTP/1.1" 200 9386
----------------------------------------
Exception happened during processing of request from ('127.0.0.1', 44798)
Traceback (most recent call last):
File "/usr/lib/python3.7/socketserver.py", line 650, in process_request_thread
self.finish_request(request, client_address)
File "/usr/lib/python3.7/socketserver.py", line 360, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "/usr/lib/python3.7/socketserver.py", line 720, in __init__
self.handle()
File "/home/dolidod/.local/lib/python3.7/site-packages/django/core/servers/basehttp.py", line 171, in handle
self.handle_one_request()
File "/home/dolidod/.local/lib/python3.7/site-packages/django/core/servers/basehttp.py", line 179, in handle_one_request
self.raw_requestline = self.rfile.readline(65537)
File "/usr/lib/python3.7/socket.py", line 589, in readinto
return self._sock.recv_into(b)
ConnectionResetError: [Errno 104] Connection reset by peer
----------------------------------------
模型:
class Track(models.Model):
title = models.CharField(max_length=40, null=True)
description = models.CharField(max_length=500, null=True)
author = models.ForeignKey(User, default=None, on_delete=models.CASCADE)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
miniature = models.ImageField(upload_to='images/track', default="defaults/default.png", validators=[validate_miniature_file_extension])
audio_or_video = models.FileField(upload_to='audio_and_video/', default="file_not_found", validators=[validate_track_file_extension])
favourite = models.BooleanField(default=False)
def __str__(self):
return self.title
模板(“.fields”,因为我使用 vuejs,但指向视频的链接与 src='{{ track.audio_or_video.url }}' 完全相同,即使我不使用 vue 也会发生错误):
<video width='400' controls>
<source :src="'/media/' + track.fields.audio_or_video" type='video/mp4'>
Your browser does not support the video tag.
</video>
urls.py(来自项目名/项目名的主文件):
urlpatterns = [
path('admin/', admin.site.urls),
path('accounts/', include('accounts.urls')),
path('profiles/', include('profiles.urls')),
path('', include('app.urls')),
]
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
设置(我将注释/数据库设置删除为短代码):
import os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
SECRET_KEY = 'rvl%g^%p$=vd1^_#j0yr2uy55*hr%)60wr&bk(#a&2qe==m54r'
DEBUG = True
ALLOWED_HOSTS = []
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'accounts',
'profiles',
'app',
]
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
ROOT_URLCONF = 'MusicApp.urls'
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
WSGI_APPLICATION = 'MusicApp.wsgi.application'
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'WebMediaFilesEditor',
'USER': 'root',
'PASSWORD': 'DemoPass#00',
}
}
AUTH_PASSWORD_VALIDATORS = [
{
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
},
]
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static/'),
)
MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
MEDIA_URL = '/media/'
SITE_URL = "http://127.0.0.1:8000"
解决方案
我找到!我必须为我的 PC 安装另一个媒体播放器 - 我安装了 VLC 并将其设为默认软件以在我的系统中打开 .mp4,然后它也可以在 chrome 中运行。
推荐阅读
- node.js - 什么是 Dialogflow 对话?使用 node.js Fulfillment SDK
- node.js - 如何使用节点 js 创建 pdf/a-1b 文件?
- javascript - 在 ionic 应用程序的 Firebase 文本中嵌入链接
- owl - 我如何表达一个对象属性是另一个对象的否定?
- typescript - 从 typescript 接口生成 swagger 文档
- css - Angular 4+:如何使用 svg 文件中的图标
- javascript - 更改 QraphQL 端点的 cypress 测试中的路由数据
- php - 如何执行每日 cron 来更新来自 Google Analytics 的数千页的综合浏览量
- c# - 将包含 2 个对象列表的类发送到我的视图
- node.js - 如何修复使用命令 npm run build 时显示的错误?