zoukankan      html  css  js  c++  java
  • ModelViewSet方法

    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 # 把两个路由列表相加

  • 相关阅读:
    Java代理模式精讲之静态代理,动态代理,CGLib代理
    Java文件编译与反编译:javac命令和javap命令
    CAS机制总结
    try-catch-finally 与返回值的修改
    不同分布式锁的实现
    缓存算法(页面置换算法)-FIFO、LFU、LRU
    多线程的线程开销
    谈谈如何来查看GC日志
    JVM中常见的垃圾收集器
    前端大牛 博客集
  • 原文地址:https://www.cnblogs.com/aa1bb2/p/14084582.html
Copyright © 2011-2022 走看看