views-修改


from .models import Projects
from rest_framework.generics import GenericAPIView
from rest_framework.response import Response
from rest_framework import status
from .serializers import ProjectsSerializer, Projects_ModelSerializer
from utils import pagination
# from utils import mixins
from rest_framework import generics
from rest_framework import filters, mixins


class ProjectDetailView(mixins.RetrieveModelMixin,
mixins.UpdateModelMixin,
mixins.DestroyModelMixin,
GenericAPIView):

queryset = Projects.objects.all()
serializer_class = Projects_ModelSerializer

def get(self, request, *args, **kwargs):

return self.retrieve(request, *args, **kwargs)

def put(self, request, *args, **kwargs):
return self.update(request, *args, **kwargs)

def delete(self, request, *args, **kwargs):
return self.destroy(request, *args, **kwargs)


"""
继承DRF的APIView之后,可实现认证,授权,限流等功能
继承DRF的APIView之后,每个实例方法中的request为Request对象
Request类对象拓展了很多Django中的HttpRequest的功能
Request类兼容HttpRequest类的功能
查询字符串参数:request.get或者request.query_params(推荐)
获取json参数:request.body或者request.data
获取www-from:request.POST或者request.data
获取multipart/form-data:request.body或者request.data

"""

"""
一:过滤
a. 在全局制定过滤引擎,setting(全局); search_fields:指定模型类过滤的字段,可加前缀(=,^,$), 【search_fields】
b. 特定的视图类制定:【filter_backends】
c. filter_queryset: 对查询集进行过滤

二:排序
a. 在setting(全局)指定排序引擎, search_fields:指定模型类过滤的字段,
b. 特定的视图类制定:【OrderingFilter】
三:分页
a. get_paginated_response:需要传序列化后的字典或嵌套字典的列表
返回response对象,返回数据中添加next,count,previous,results(数据)
b. pagination_class: 指定分页引擎
"""


# class ProjectView(mixins.ListModelMixin, mixins.CreateModelMixin, GenericAPIView):
# class ProjectView(generics.ListAPIView, generics.CreateAPIView, GenericAPIView):
class ProjectView(generics.ListCreateAPIView):

queryset = Projects.objects.all()
serializer_class = Projects_ModelSerializer

search_fields = ['name', 'leader']
ordering_fields = ['name', 'id', 'leader']

filter_backends = [filters.SearchFilter, filters.OrderingFilter]

# 指定分页引擎
# pagination_class = pagination

# def get(self, request, *args, **kwargs):
# return self.list(request, *args, **kwargs)
#
# def post(self, request, *args, **kwargs):
# return self.create(request, *args, **kwargs)

posted @ 2021-01-09 20:24  zxy_ang  阅读(99)  评论(0)    收藏  举报