[django项目] 如何在网站上实现在线视频功能? | 您所在的位置:网站首页 › 用百度云播放本地视频 › [django项目] 如何在网站上实现在线视频功能? |
在线视频
I. 功能需求分析
1>分析
在线直播,或点播设计到视频的存储,转码,加密,播放很多细节,个人单独开发不现实。本项目的在线课堂选择在线播放视频的形式。实际项目中一般选择云点播或者内嵌视频网站的方式进行。本项目选择是用百度云VOD点播来实现。 2>功能 视频展示页面视频播放详情 II. 模型设计 1>表字段分析 老师表 姓名职称简介头像 课程分类表 名称 课程表 课程名称封面视频地址时长简介大纲老师分类 2>模型定义在course/models.py中定义如下模型 from django.db import models from utils.models import BaseModel class Teacher(BaseModel): name = models.CharField('讲师姓名', max_length=150, help_text='讲师姓名') title = models.CharField('职称', max_length=150, help_text='职称') profile = models.TextField('简介', help_text='简介') photo = models.URLField('头像url', default='', help_text='头像url') class Meta: db_table = 'tb_teachers' verbose_name = '讲师' verbose_name_plural = verbose_name def __str__(self): return self.name class CourseCategory(BaseModel): name = models.CharField('课程分类名', max_length=100, help_text='课程分类名') class Meta: db_table = 'tb_course_category' verbose_name = '课程分类' verbose_name_plural = verbose_name def __str__(self): return self.name class Course(BaseModel): title = models.CharField('课程名', max_length=150, help_text='课程名') cover_url = models.URLField('封面url', help_text='封面url') video_url = models.URLField('课程视频url', help_text='课程视频url') duration = models.DurationField('课程时长', help_text='课程时长') profile = models.TextField('课程简介', null=True, blank=True, help_text='课程简介') outline = models.TextField('课程大纲', null=True, blank=True, help_text='课程大纲') teacher = models.ForeignKey('Teacher', on_delete=models.SET_NULL, null=True, blank=True) category = models.ForeignKey('CourseCategory', on_delete=models.SET_NULL, null=True, blank=True) class Meta: db_table = 'tb_course' verbose_name = '课程' verbose_name_plural = verbose_name def __str__(self): return self.titleDurationField表示时间间隔 只要创建模板就要生成迁移 III. 百度云VOD音视频点播 1>开通百度VOD音频点播功能打开网址, 注册登陆, 点击立即购买 如果是首次使用需要填写信息, 然后提交 提交后点击此处 切换到vod界面 如果是没有认证则先认证再开通, 首次会送55元包, 这足以供我们使用 官方使用说明 返回结果: 文档下载页面 2>后端代码 2.1>视图 # 在course/views.py文件下创建如下视图 from django.shortcuts import render, Http404 from django.views import View from . import models def course_list(request): """ 在线课程列表 url:/course/ """ # 1. 拿到所有视频数据 courses = Course.objects.select_related('teacher').only( 'title', 'cover_url', 'teacher__title', 'teacher__name').filter(is_delete=False) # 用only的原因取到指定的字段, 而不是获取所有字段, 提升性能 # 2. 前端渲染 return render(request, 'course/course.html', context={'courses': courses})2.2>路由 # 在course/urs.py中定义如下路由 from django.urls import path from . import views app_name = 'course' urlpatterns = [ path('', views.course_list, name='index'), ] 3>前端代码 3.1>html {% extends 'base/base.html' %} {% load static %} {% block title %}在线课程{% endblock %} {% block link %} iMenuIndex = 1 {% endblock %} {% block main %} {% for course in courses %} |
CopyRight 2018-2019 实验室设备网 版权所有 |