Django+Vue3 线上教育平台项目实战:构建高效线上教育平台之首页模块

在现代在线教育平台中,首页模块作为用户首次访问的界面,其重要性不言而喻。为了构建一个高效且用户友好的线上教育平台,我们将使用Django作为后端框架,Vue3作为前端框架。本文将重点讲解如何构建首页模块,包括后端的数据接口和前端的展示。

一、项目结构

我们的项目结构如下:

education_platform/
├── backend/
│   ├── manage.py
│   ├── education/
│   │   ├── models.py
│   │   ├── views.py
│   │   ├── urls.py
│   └── requirements.txt
└── frontend/
    ├── src/
    │   ├── components/
    │   │   └── Home.vue
    │   ├── App.vue
    │   └── main.js
    └── package.json

二、后端 Django 设置

在我们的Django项目中,首先需要创建课程模型,并提供相应的API供前端调用。

1. 创建模型

models.py 文件中定义课程模型:

from django.db import models

class Course(models.Model):
    title = models.CharField(max_length=200)
    description = models.TextField()
    price = models.DecimalField(max_digits=10, decimal_places=2)
    created_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.title
2. 创建视图

接下来,在 views.py 中创建一个视图来获取课程列表:

from django.http import JsonResponse
from .models import Course

def course_list(request):
    courses = Course.objects.all().values()
    return JsonResponse(list(courses), safe=False)
3. 配置路由

然后在 urls.py 配置路由,使其可以访问到课程列表:

from django.urls import path
from .views import course_list

urlpatterns = [
    path('api/courses/', course_list, name='course_list'),
]

三、前端 Vue3 设置

在我们的Vue3项目中,首先需要安装axios库以方便进行HTTP请求:

npm install axios
1. 创建首页组件

Home.vue 中创建课程展示的组件:

<template>
  <div class="home">
    <h1>欢迎来到在线教育平台</h1>
    <div v-if="courses.length">
      <div v-for="course in courses" :key="course.id" class="course">
        <h2>{{ course.title }}</h2>
        <p>{{ course.description }}</p>
        <p>价格: {{ course.price }}元</p>
      </div>
    </div>
    <div v-else>
      <p>加载中...</p>
    </div>
  </div>
</template>

<script>
import axios from 'axios';

export default {
  data() {
    return {
      courses: []
    };
  },
  created() {
    this.fetchCourses();
  },
  methods: {
    async fetchCourses() {
      try {
        const response = await axios.get('http://localhost:8000/api/courses/');
        this.courses = response.data;
      } catch (error) {
        console.error("无法获取课程数据", error);
      }
    }
  }
};
</script>

<style scoped>
.course {
  border: 1px solid #ccc;
  margin: 20px;
  padding: 10px;
}
</style>
2. 整合到主应用

App.vue 中引入并使用 Home 组件:

<template>
  <div id="app">
    <Home />
  </div>
</template>

<script>
import Home from './components/Home.vue';

export default {
  components: {
    Home
  }
};
</script>

四、总结

通过以上步骤,我们成功构建了一个基于Django和Vue3的在线教育平台的首页模块。后端提供了课程数据的API接口,而前端则通过axios获取数据并展示在网页上。 根据这个基础结构,我们可以继续扩展其他功能如课程详情页、用户注册登录等。希望这篇文章能帮助到那些想要打造线上教育平台的开发者们。

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部