django中restframework的视图

总结:

    a. 增删改查   ModelViewSet  

    b. 增删          CreateModelMixin, DestroyNodeMixin,  GenericViewSet

    c.  复杂逻辑   GenericViewSet    或    APIView

   

1. 使用ModelViewSet(主要是GenericAPIView在作用,而其他类在做路由映射)

    1. 在视图中使用ModelViewSet(注意:queryset中是不一定是全部数据,可以是筛选后或者查询过滤后的数据)

这样只支持单个数据的删除,更新,一般也是这样,不会有批量更新和删除。批量的另写两个,一个更新的,一个删除的就行。

from .utils.serializers.pager import PageSerialiser
from rest_framework.response import Response
from rest_framework.pagination import PageNumberPagination
from rest_framework.viewsets import ModelViewSet

class MyPageNumberPagination(PageNumberPagination):
    # 继承分页对象,有更多的灵活配置功能
    # cursor_query_param = 'cursor'       # 分页参数
    page_size = 2                       # 每一个页默认显示多少个
    # ordering = 'id'                    # 按照哪个字段排序
    page_size_query_param = 'size'      # 可定制每一页显示多少个
    max_page_size = 10                  #一页最多显示多少个

class View1(ModelViewSet):
    authentication_classes = []
    permission_classes = []

    queryset = models.Role.objects.all()        # 获取所有数据,也可以是筛选或查询后的数据,然后进行增删改查操作
    pagination_class = MyPageNumberPagination   # 获取分页对象,这个是分页对象
    serializer_class = PageSerialiser           # 序列化,这个是导入的序列化对象

     2. 要在urls中配置,

url('^api/v1/view1/$', views.View1.as_view({'get':'list', 'post':'create'}), name='view1'),
url('^api/v1/view1/(?P<pk>\d+)/$', views.View1.as_view({'get':'retrieve', 'delete':'destroy', 'put':'update', 'patch':'partial_update'}), name='view2')

         list是获取数据,create是创建数据,所以无参数;retrieve是获取单个数据,destroy是删除某个数据,update是全部更新,partial_update是部分字段的更新

    3. 这样可以获得对应方法的对应操作了

    4. 上面urls对应的链接

        下面urls对应的链接

2. GenericViewSet继承APIView,可以修改路由对应系统,其他的没变

from rest_framework.viewsets import GenericViewSet

如图所示,如果请求是gei,则执行list方法,如果请求时post,则执行xxx方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值