首页 > 其他分享 >Luffy商城项目第十二天

Luffy商城项目第十二天

时间:2022-11-20 20:56:09浏览次数:39  
标签:第十二天 ordering price filter course 课程 nbsp Luffy 商城

1 课程详情页接口

 

2 课程列表前端

 

3 课程详细前端

 

3.1 视频播放器 课程详情页前端 vue

3.2 视频托管

4 搜索导航栏

 

5 搜索后台接口

 

6 搜索前端页面

 

内容详细

1 课程详情页接口

1 课程详情接口

2 课程章节接口---》章节下有课时

 -查询所有章节接口,带按课程id号过滤的功能

    -http://127.0.0.1:8000/api/v1/course/chapter/?course=2

视图类

 

class CourseChapterView(GenericViewSet, CommonListModelMixin):

    queryset = CourseChapter.objects.all().filter(is_delete=False, is_show=True).order_by('orders')

    serializer_class = CourseChapterSerializer

    filter_backends = [DjangoFilterBackend]

    filterset_fields = ['course']

序列化类

 

class CourseSectionSerializer(serializers.ModelSerializer):

    class Meta:

        model = CourseSection

        fields = '__all__'

 

 

class CourseChapterSerializer(serializers.ModelSerializer):

    # 三种:序列化类中写,表模型中写,子序列化

    # 一个章节下,有很多课时,课时是多条,子序列化的时候,一定不要忘了many=True

    coursesections = CourseSectionSerializer(many=True)

 

    class Meta:

        model = CourseChapter

        fields = ['id', 'chapter', 'name', 'summary', 'coursesections']

路由

 

router.register('chapter', views.CourseChapterView, 'chapter')

2 课程列表前端

<template>

  <div class="course">

    <Header></Header>

    <div class="main">

      <!-- 筛选条件 -->

      <div class="condition">

        <ul class="cate-list">

          <li class="title">课程分类:</li>

          <li :class="filter.course_category==0?'this':''" @click="filter.course_category=0">全部</li>

          <li :class="filter.course_category==category.id?'this':''" v-for="category in category_list"

              @click="filter.course_category=category.id" :key="category.name">{{ category.name }}

          </li>

        </ul>

 

        <div class="ordering">

          <ul>

            <li class="title">筛&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;选:</li>

            <li class="default" :class="(filter.ordering=='id' || filter.ordering=='-id')?'this':''"

                @click="filter.ordering='orders'">默认

            </li>

            <li class="hot" :class="(filter.ordering=='students' || filter.ordering=='-students')?'this':''"

                @click="filter.ordering=(filter.ordering=='-students'?'students':'-students')">人气

            </li>

            <li class="price"

                :class="filter.ordering=='price'?'price_up this':(filter.ordering=='-price'?'price_down this':'')"

                @click="filter.ordering=(filter.ordering=='-price'?'price':'-price')">价格

            </li>

          </ul>

          <p class="condition-result">共{{ course_total }}个课程</p>

        </div>

 

      </div>

      <!-- 课程列表 -->

      <div class="course-list">

        <div class="course-item" v-for="course in course_list" :key="course.name">

          <div class="course-image">

            <img :src="course.course_img" alt="">

          </div>

          <div class="course-info">

            <h3>

              <router-link :to="'/free/detail/'+course.id">{{ course.name }}</router-link>

              <span><img src="@/assets/img/avatar1.svg" alt="">{{ course.students }}人已加入学习</span></h3>

            <p class="teather-info">

              {{ course.teacher.name }} {{ course.teacher.title }} {{ course.teacher.signature }}

              <span

                  v-if="course.sections>course.pub_sections">共{{ course.sections }}课时/已更新{{ course.pub_sections }}课时</span>

              <span v-else>共{{ course.sections }}课时/更新完成</span>

            </p>

            <ul class="section-list">

              <li v-for="(section, key) in course.section_list" :key="section.name"><span

                  class="section-title">0{{ key + 1 }} | {{ section.name }}</span>

                <span class="free" v-if="section.free_trail">免费</span></li>

            </ul>

            <div class="pay-box">

              <div v-if="course.discount_type">

                <span class="discount-type">{{ course.discount_type }}</span>

                <span class="discount-price">¥{{ course.real_price }}元</span>

                <span class="original-price">原价:{{ course.price }}元</span>

              </div>

              <span v-else class="discount-price">¥{{ course.price }}元</span>

              <span class="buy-now">立即购买</span>

            </div>

          </div>

        </div>

      </div>

      <div class="course_pagination block">

        <el-pagination

            @size-change="handleSizeChange"

            @current-change="handleCurrentChange"

            :current-page.sync="filter.page"

            :page-sizes="[2, 3, 5, 10]"

            :page-size="filter.page_size"

            layout="sizes, prev, pager, next"

            :total="course_total">

        </el-pagination>

      </div>

    </div>

    <Footer></Footer>

  </div>

</template>

 

<script>

import Header from "@/components/Header"

import Footer from "@/components/Footer"

 

export default {

  name: "Course",

  data() {

    return {

      category_list: [], // 课程分类列表

      course_list: [], // 课程列表

      course_total: 0, // 当前课程的总数量

      filter: {

        course_category: 0, // 当前用户选择的课程分类,刚进入页面默认为全部,值为0

        ordering: "orders", // 数据的排序方式,默认值是orders,表示对于id进行降序排列

   

标签:第十二天,ordering,price,filter,course,课程,nbsp,Luffy,商城
From: https://www.cnblogs.com/scx-xiaochun/p/16909491.html

相关文章

  • 【2022.11.18】luffy项目部署(11)
    内容详细1课程板块相关表分析及创建2课程板块,数据录入2.1老师表课程表课程分类表章节表课时表3课程列表页(前端)3.1免费课轻课实战课路由配置4......
  • luffy学习-12
    一、课程详情页接口一个页面对应后端的不只有一个接口,可能有很多个接口,页面加载完成后依次的发送请求,渲染相应的部分课程章节接口——>章节下面有课时查询所有章节接口......
  • 精准用户画像!商城用户分群2.0!⛵
    ......
  • java网上商城与php网上商城比较
    java网上商城与php商城比较1.应用比较:JAVA的应用比较广泛,比如世界五百强网站,大型政府网,各大银行等网站都是基于JAVA构建。基于JAVA技术开发的商城......
  • 第十二天
    一、内容介绍1.登录实现流程(单点登录):2.实现项目中的注册接口使用步骤:1.在common中引入依赖,复制jwt工具类:点击查看代码jwt需要添加的依赖<dependencies>......
  • 【luffy】课程详情页接口,前端搭建,视频播放器,导航栏
    目录1.课程详情页接口2.课程列表前端2.1轻课2.2实战课2.3课程详情2.4视频播放器3.第三方存储视频托管4.搜索导航栏5.搜索前端页面1.课程详情页接口课程章节接......
  • luffy项目(十二)
    今日内容概要课程详情页接口课程列表前端课程详情前端搜索导航栏搜索后台接口搜索前端页面今日内容详细课程详情页接口查询所有章节接口,带按课程id号过滤的......
  • 今日内容,luffy项目课程详情页前后端
    课程详情页接口路由router.register('chapter',views.CourseChapterView,'chapter')视图类classCourseChapterView(GenericViewSet,CommonListModelMixin):......
  • luffy之课程详情页接口和搜索导航栏接口和前端
    一、课程章节接口   #课程详情接口只需要在查询所有课程下加上RetrieveModelMixin按照课程id查询即可-http://127.0.0.1:8000/api/v1/course/l......
  • 【2022-11-18】luffy项目实战(十一)
    一、课程列表页之前端views/Course.vue<template><divclass="course"><Header></Header><divclass="main"><!--筛选条件-->......