• 课程主页面三个接口开发


    课程主页面三个接口开发

    0.课程主页面接口对应页面效果

    1.课程类别接口开发
    1.1 course/urls.py 添加路由

    from django.urls import path, re_path
    from rest_framework.routers import DefaultRouter # 导入DRF得DefaultRouter
    from . import views
    router = DefaultRouter() # 有根路由
    router.register(r'type', views.CourseTypeViewSet) # 写路由
    urlpatterns = [
    ]
    urlpatterns += router.urls # 把两个路由列表相加
    1.2 course/serializers.py 写序列化器

    from rest_framework import serializers
    from course.models import CourseType
    class CourseTypeSerializer(serializers.ModelSerializer):
    class Meta:
    model = CourseType
    fields = 'all'
    1.3 course/views.py 添加视图函数

    from rest_framework import viewsets
    from rest_framework.pagination import PageNumberPagination
    from course.models import *
    from course.serializers import *
    class PageNum(PageNumberPagination):
    page_size_query_param = 'page_size'
    class CourseTypeViewSet(viewsets.ModelViewSet):
    queryset = CourseType.objects.all()
    serializer_class = CourseTypeSerializer
    1.4 course/admin.py 注册后台管理

    from django.contrib import admin
    from . import models
    admin.site.register(models.CourseType)
    1.5 测试接口
    http://192.168.56.100:8888/course/type/

    2.标签接口开发
    2.1 course/urls.py 添加路由

    router.register(r'tag', views.CourseTagViewSet)
    2.2 course/serializers.py 写序列化器

    from rest_framework import serializers
    from course.models import CourseTag
    class CourseTagSerializer(serializers.ModelSerializer):
    class Meta:
    model = CourseTag
    fields = 'all'
    2.3 course/views.py 添加视图函数

    from course.models import *
    from course.serializers import *
    class CourseTagViewSet(viewsets.ModelViewSet):
    queryset = CourseTag.objects.all()
    serializer_class = CourseTagSerializer
    2.4 course/admin.py 注册后台管理

    from django.contrib import admin
    from . import models
    admin.site.register(models.CourseTag)
    2.5 测试接口
    http://192.168.56.100:8888/course/tag/

    3.课程接口开发
    3.1 course/urls.py 添加路由

    router.register(r'course', views.CourseViewSet)
    3.2 course/serializers.py 写序列化器

    -- coding: utf-8 --

    from rest_framework import serializers
    from course.models import *
    class CourseSerializer(serializers.ModelSerializer):
    class Meta:
    model = Course
    fields = 'all' # 所有字段
    class SectionsSerializer(serializers.ModelSerializer):
    class Meta:
    model = Sections
    fields = 'all'
    class ChaptersSerializer(serializers.ModelSerializer):
    sections = SectionsSerializer(many=True)
    class Meta:
    model = Chapters
    fields = 'all'
    class CourseDeepSerializer(CourseSerializer):

    字段名名, 必须是模型可以 . 引用到的变量

    Course(). "chapters" 才能作为字段名, 如果是集合, 需要加many=True,

    chapters = ChaptersSerializer(many=True)
    3.3 course/views.py 添加视图函数

    from django.shortcuts import render
    from django_filters.rest_framework import DjangoFilterBackend
    from rest_framework import viewsets
    from rest_framework.filters import OrderingFilter
    from rest_framework.pagination import PageNumberPagination
    from course.models import *
    from course.serializers import *
    class CourseViewSet(viewsets.ModelViewSet):
    queryset = Course.objects.all()
    serializer_class = CourseDeepSerializer

    指定过滤方法类, 排序方法类, 一个或多个

    filter_backends = (DjangoFilterBackend, OrderingFilter) # 同时支持过滤和排序

    指定排序字段, 不设置, 排序功能不起效

    ordering_fields = ('attention', 'learner', 'create_time')

    指定过滤字段, 不设置, 过滤功能不起效

    filter_fields = ('title', 'desc', 'status', 'course_type', 'course_tag')

    自定义分页器 覆盖全局配置

    pagination_class = PageNum
    def get_serializer_class(self):
    if self.action == 'list':
    return CourseSerializer
    else:
    return CourseDeepSerializer
    3.4 course/admin.py 注册后台管理

    from django.contrib import admin
    from . import models
    admin.site.register(models.Course)
    3.5 测试接口
    http://192.168.56.100:8888/course/course/

  • 相关阅读:
    263 相对布局之3— 相对布局的综合案例
    262 相对布局之2— 相对布局的属性设置
    leetcode-----110. 平衡二叉树
    leetcode-----109. 有序链表转换二叉搜索树
    leetcode-----108. 将有序数组转换为二叉搜索树
    leetcode-----107. 二叉树的层次遍历 II
    leetcode-----106. 从中序与后序遍历序列构造二叉树
    leetcode-----105. 从前序与中序遍历序列构造二叉树
    leetcode-----104. 二叉树的最大深度
    leetcode-----103. 二叉树的锯齿形层次遍历
  • 原文地址:https://www.cnblogs.com/lll11115/p/13947679.html
Copyright © 2020-2023  润新知