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 PageNum(PageNumberPagination):
  page_size_query_param = 'page_size'


class CourseTypeViewSet(viewsets.ModelViewSet):
  queryset = CourseType.objects.all()
  serializer_class = CourseTypeSerializer

 

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

 

 

 

 

 

from rest_framework.routers import DefaultRouter # 导入DRF得DefaultRouter
from . import views

router = DefaultRouter() # 有根路由
router.register(r'type', views.CourseTypeViewSet) # 写路由
router.register(r'tag', views.CourseTagViewSet)
router.register(r'course', views.CourseViewSet)

router.register(r'sections', views.SectionsViewSet)

urlpatterns = [

]

urlpatterns += router.urls # 把两个路由列表相加

 

posted on 2020-12-04 10:51  yujian8759  阅读(208)  评论(0编辑  收藏  举报