在构建一个线上教育平台时,课程详情页和视频播放功能是不可或缺的重要组成部分。本文将以 Django 和 Vue3 为基础,详细介绍如何构建课程详情页并集成视频播放功能。

一、项目环境设置

在开始之前,请确保您已安装 Django 和 Vue 3,并创建了基本的项目结构。您可以通过以下命令安装 Django:

pip install django

然后使用以下命令创建 Django 项目和应用:

django-admin startproject education_platform
cd education_platform
django-admin startapp courses

在前端,我们使用 Vue 3。首先全局安装 Vue CLI:

npm install -g @vue/cli

然后使用 Vue CLI 创建新的 Vue 项目:

vue create frontend

二、Django 后端设置

courses 应用中,我们需要定义课程模型和 API 接口。

1. 创建模型

courses/models.py 中定义课程模型:

from django.db import models

class Course(models.Model):
    title = models.CharField(max_length=100)
    description = models.TextField()
    video_url = models.URLField()  # 视频链接

    def __str__(self):
        return self.title

2. 创建 API 视图

使用 Django REST Framework 创建课程 API。首先安装这两个包:

pip install djangorestframework

然后在 courses/views.py 中添加视图:

from rest_framework import viewsets
from .models import Course
from .serializers import CourseSerializer

class CourseViewSet(viewsets.ReadOnlyModelViewSet):
    queryset = Course.objects.all()
    serializer_class = CourseSerializer

然后,创建序列化器 courses/serializers.py

from rest_framework import serializers
from .models import Course

class CourseSerializer(serializers.ModelSerializer):
    class Meta:
        model = Course
        fields = '__all__'

最后在 education_platform/urls.py 中配置 URL:

from django.urls import path, include
from rest_framework.routers import DefaultRouter
from courses.views import CourseViewSet

router = DefaultRouter()
router.register(r'courses', CourseViewSet)

urlpatterns = [
    path('', include(router.urls)),
]

三、Vue 3 前端设置

在 Vue 项目中,我们将使用 Axios 来请求后端 API,并展示课程详情。

1. 安装 Axios

在 Vue 项目根目录下,安装 Axios:

npm install axios

2. 创建课程详情组件

src/components 目录下创建 CourseDetail.vue 文件:

<template>
  <div>
    <h1>{{ course.title }}</h1>
    <p>{{ course.description }}</p>
    <video v-if="course.video_url" controls>
      <source :src="course.video_url" type="video/mp4">
      你的浏览器不支持播放视频。
    </video>
  </div>
</template>

<script>
import axios from 'axios';

export default {
  data() {
    return {
      course: {}
    };
  },
  created() {
    const courseId = this.$route.params.id;
    axios.get(`http://localhost:8000/courses/${courseId}/`)
      .then(response => {
        this.course = response.data;
      })
      .catch(error => {
        console.error("无法获取课程数据:", error);
      });
  }
};
</script>

<style scoped>
/*添加样式*/
</style>

四、配置 Vue Router

src/router/index.js 中添加路由配置:

import { createRouter, createWebHistory } from 'vue-router';
import CourseDetail from '../components/CourseDetail.vue';

const routes = [
  {
    path: '/course/:id',
    name: 'CourseDetail',
    component: CourseDetail
  }
];

const router = createRouter({
  history: createWebHistory(process.env.BASE_URL),
  routes
});

export default router;

五、总结

通过以上步骤,我们成功地将 Django 后端的课程信息通过 API 提供给 Vue 3 前端,并在课程详情页中展示课程信息及视频播放功能。您可以根据需求扩展更多功能,例如用户评论、课程购买等。希望这篇文章能为您构建线上教育平台提供参考和帮助!

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部