潭州课堂25班:Ph201805201 django 项目 第三十一课 在线课堂视频点播的实现(课堂笔记)...

本文主要是介绍潭州课堂25班:Ph201805201 django 项目 第三十一课 在线课堂视频点播的实现(课堂笔记)...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在线课堂

 

一、数据库模型设计

# 在apps/course/models.py中定义如下模型:
from django.db import modelsfrom utils.models import ModelBaseclass Teacher(ModelBase):name = models.CharField(max_length=150, verbose_name="讲师姓名", help_text='讲师姓名')positional_title = models.CharField(max_length=150, verbose_name="职称", help_text='职称')profile = models.TextField(verbose_name="简介", help_text='简介')avatar_url = models.URLField(default="", verbose_name="头像url", help_text='头像url')class Meta:db_table = "tb_teachers"  # 指明数据库表名verbose_name = "讲师"  # 在admin站点中显示的名称verbose_name_plural = verbose_name  # 显示的复数名称def __str__(self):return self.nameclass CourseCategory(ModelBase):name = models.CharField(max_length=100, verbose_name="课程分类名", help_text='课程分类名')class Meta:db_table = "tb_course_category"  # 指明数据库表名verbose_name = "课程分类"  # 在admin站点中显示的名称verbose_name_plural = verbose_name  # 显示的复数名称def __str__(self):return self.nameclass Course(ModelBase):title = models.CharField(max_length=150, verbose_name="课程名", help_text='课程名')cover_url = models.URLField(verbose_name="课程封面图URL", help_text='课程封面图URL')video_url = models.URLField(verbose_name="课程视频URL", help_text='课程视频URL')duration = models.FloatField(default=0.0, verbose_name="课程时长", help_text='课程时长')profile = models.TextField(null=True, blank=True, verbose_name="课程简介", help_text='课程简介')outline = models.TextField(null=True, blank=True, verbose_name="课程大纲", 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 = "课程"  # 在admin站点中显示的名称verbose_name_plural = verbose_name  # 显示的复数名称def __str__(self):return self.title

  

  

 

二、百度云VOD点播功能

1.简介

百度 VOD (Video On Demand) 是百度云 BCE (Baidu Cloud Engine) 提供的面向音视频点播的 PaaS (Platform as a Service) 服务平台,为开发者提供音视频文件的存储、管理及播放服务。您无需了解音视频存储、转码、加密、分发、播放等技术细节,即可快速搭建安全可靠、高可定制的点播平台和应用。

 

2.注册登录上传测试视频
  • 打开百度云:https://cloud.baidu.com/

  • 可以使用已有的百度云盘账号登录

  • 下载百度云APP到手机中,使用刷脸认证

 

  • 认证成功之后,会赠送55元的VOD视频点播券

  • 开通"视频点播VOD"服务

 

上传测试视频 

 

# 在mysql数据库中添加你们自己的测试数据(如下数据仅仅是案例,不能正常导入)insert into tb_teachers (name, positional_title, profile, avatar_url, create_time, update_time, is_delete) values
('Youkou', 'python高级讲师', '讲师简介', '/media/youkou.jpg', now(), now(), 0);insert into tb_course_category (name, create_time, update_time, is_delete) values
('python基础', now(), now(), 0), 
('python高级', now(), now(), 0), 
('python框架', now(), now(), 0);insert into tb_course (title, cover_url, video_url, duration, `profile`, outline, teacher_id, category_id, create_time, update_time, is_delete) values
('你的测试视频1名称', '你的测试视频缩略图URL', '你的测试视频URL', 10.5, '你的测试视频简介', '你的视频大纲', 1, 2, now(), now(), 0),('你的测试视频2名称', '你的测试视频缩略图URL', '你的测试视频URL', '你的测试视频时长为浮点型', '你的测试视频简介', '你的视频大纲', 1, 2, now(), now(), 0);

  

 

三、后端功能实现

课程列表视图

# 在apps/course/views.py中定义如下类视图:

# 在apps/course/views.py中定义如下类视图:from django.shortcuts import render
from . import modelsdef course_list(request):courses = models.Course.objects.only('title', 'cover_url', 'teacher__positional_title').filter(is_delete=False)return render(request, 'course/course.html', locals())

  课程详情视图

# 在apps/course/views.py中定义如下类视图:from django.http import Http404
from django.shortcuts import render
from django.views import Viewfrom . import modelslogger = logging.getLogger('django')class CourseDetailView(View):""""""def get(self, request, course_id):try:course = models.Course.objects.only('title', 'cover_url', 'video_url', 'profile', 'outline','teacher__name', 'teacher__avatar_url','teacher__positional_title', 'teacher__profile').\select_related('teacher').filter(is_delete=False, id=course_id).first()return render(request, 'course/course_detail.html', locals())except models.Course.DoesNotExist as e:logger.info("当前课程出现如下异常:\n{}".format(e))raise Http404("此课程不存在!")

  

转载于:https://www.cnblogs.com/gdwz922/p/10212544.html

这篇关于潭州课堂25班:Ph201805201 django 项目 第三十一课 在线课堂视频点播的实现(课堂笔记)...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/299596

相关文章

Java根据IP地址实现归属地获取

《Java根据IP地址实现归属地获取》Ip2region是一个离线IP地址定位库和IP定位数据管理框架,这篇文章主要为大家详细介绍了Java如何使用Ip2region实现根据IP地址获取归属地,感兴趣... 目录一、使用Ip2region离线获取1、Ip2region简介2、导包3、下编程载xdb文件4、J

PyQt5+Python-docx实现一键生成测试报告

《PyQt5+Python-docx实现一键生成测试报告》作为一名测试工程师,你是否经历过手动填写测试报告的痛苦,本文将用Python的PyQt5和python-docx库,打造一款测试报告一键生成工... 目录引言工具功能亮点工具设计思路1. 界面设计:PyQt5实现数据输入2. 文档生成:python-

Android实现一键录屏功能(附源码)

《Android实现一键录屏功能(附源码)》在Android5.0及以上版本,系统提供了MediaProjectionAPI,允许应用在用户授权下录制屏幕内容并输出到视频文件,所以本文将基于此实现一个... 目录一、项目介绍二、相关技术与原理三、系统权限与用户授权四、项目架构与流程五、环境配置与依赖六、完整

浅析如何使用xstream实现javaBean与xml互转

《浅析如何使用xstream实现javaBean与xml互转》XStream是一个用于将Java对象与XML之间进行转换的库,它非常简单易用,下面将详细介绍如何使用XStream实现JavaBean与... 目录1. 引入依赖2. 定义 JavaBean3. JavaBean 转 XML4. XML 转 J

Flutter实现文字镂空效果的详细步骤

《Flutter实现文字镂空效果的详细步骤》:本文主要介绍如何使用Flutter实现文字镂空效果,包括创建基础应用结构、实现自定义绘制器、构建UI界面以及实现颜色选择按钮等步骤,并详细解析了混合模... 目录引言实现原理开始实现步骤1:创建基础应用结构步骤2:创建主屏幕步骤3:实现自定义绘制器步骤4:构建U

SpringBoot中四种AOP实战应用场景及代码实现

《SpringBoot中四种AOP实战应用场景及代码实现》面向切面编程(AOP)是Spring框架的核心功能之一,它通过预编译和运行期动态代理实现程序功能的统一维护,在SpringBoot应用中,AO... 目录引言场景一:日志记录与性能监控业务需求实现方案使用示例扩展:MDC实现请求跟踪场景二:权限控制与

Android实现定时任务的几种方式汇总(附源码)

《Android实现定时任务的几种方式汇总(附源码)》在Android应用中,定时任务(ScheduledTask)的需求几乎无处不在:从定时刷新数据、定时备份、定时推送通知,到夜间静默下载、循环执行... 目录一、项目介绍1. 背景与意义二、相关基础知识与系统约束三、方案一:Handler.postDel

Python开发文字版随机事件游戏的项目实例

《Python开发文字版随机事件游戏的项目实例》随机事件游戏是一种通过生成不可预测的事件来增强游戏体验的类型,在这篇博文中,我们将使用Python开发一款文字版随机事件游戏,通过这个项目,读者不仅能够... 目录项目概述2.1 游戏概念2.2 游戏特色2.3 目标玩家群体技术选择与环境准备3.1 开发环境3

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展

Python实现微信自动锁定工具

《Python实现微信自动锁定工具》在数字化办公时代,微信已成为职场沟通的重要工具,但临时离开时忘记锁屏可能导致敏感信息泄露,下面我们就来看看如何使用Python打造一个微信自动锁定工具吧... 目录引言:当微信隐私遇到自动化守护效果展示核心功能全景图技术亮点深度解析1. 无操作检测引擎2. 微信路径智能获