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

  • 相关阅读:
    PHP定时执行计划任务
    MySQL正则表达式 REGEXP详解
    mysql常用的一些命令,用于查看数据库、表、字段编码
    MySQL 编码
    【MySQL】Win7下修改MySQL5.5默认编码格式
    linux下使用svn
    MySql command line client 命令系列
    linux svn
    BZOJ5317 JSOI2018部落战争(凸包)
    Educational Codeforces Round 58 Div. 2 自闭记
  • 原文地址:https://www.cnblogs.com/aa1bb2/p/14084582.html
Copyright © 2011-2022 走看看