• 【转】详解drf中的ModelViewSet


    转自:https://blog.csdn.net/weixin_36646275/article/details/83965621

    详解drf中的ModelViewSet
    使用:
    # view.py
    from rest_framework import viewsets
    class PersonalSet(viewsets.ModelViewSet):
      queryset = Personal.objects.all()
      serializer_class = PersonalSerializer
      pagination_class = LargeResultsSetPagination
      permission_classes = (IsAuthenticated,)
      authentication_classes = (JSONWebTokenAuthentication,)

    # urls.py
    from django.urls import include, path
    from rest_framework import routers
    from rest_framework.authtoken import views
    from rest_framework_jwt.views import obtain_jwt_token
    from okr_rest.views import TestGroupSet, QuarterSet, PersonalSet

    router = routers.DefaultRouter()
    router.register("test_group", TestGroupSet)
    router.register("quarter", QuarterSet, base_name="quarter")
    router.register("personal", PersonalSet)

    urlpatterns = [
      path("", include(router.urls)),
      path("api-auth/", include("rest_framework.urls", namespace="rest_framework")),
      path("api-token-auth/", views.obtain_auth_token),
      path("jwt-auth/", obtain_jwt_token)

    说明:
    ModelViewSet中默认已经有五个混入类直接封装好处理各种请求.对应关系已经访问url如下: DRF默认已经封装了五种常用的方法,但由于封装不同需要在访问的时候注意访问url(detail是否为true).当然也可以根据自己需要重新各种方法

    类名             HTTP方法   说明     detail     URL示例
    mixins.CreateModelMixin     POST   创建数据   False     http://localhost/api/personal/
    mixins.RetrieveModelMixin     GET     检索数据   True       http://localhost/api/personal/30/
    mixins.UpdateModelMixin     PUT         更新数据         True                 http://localhost/api/personal/30/
    mixins.DestroyModelMixin              DELETE    删除数据        True                 http://localhost/api/personal/30/
    mixins.ListModelMixin                     GET          获取数据         False               http://localhost/api/personal/

    view的用法说明:

    class GoodsListViewSet(viewsets.ModelViewSet):

        """
        list:
            商品列表
        read:
            商品详情
        create:
            增加商品
        update:
            更改商品
        partial_update:
            部分更改
        delete:
            删除商品
        """
        # 必须定义一个默认排序否则会报错
        queryset = Goods.objects.all().order_by('id')
        # 分页
        pagination_class = GoodsPagination
        serializer_class = GoodsSerializer
        # 过滤
        filter_backends = (DjangoFilterBackend, filters.SearchFilter, filters.OrderingFilter)
        filter_class = GoodsFilters
        # 搜索
        search_fields = ('name', 'goods_brief', 'goods_desc')
        # 排序
        ordering_fields = ('sold_num', 'shop_price')
  • 相关阅读:
    第三章 p62 或运算
    p57 字符串的长度
    p53 ASCII码
    整数类型,如同时钟
    重要:原码、反码、补码...
    p42 实验溢出(上溢)
    P40 字节单位:KMGT
    p38 二、八、十六进制的对应关系
    p13 数组元素的地址
    p11 内存中的数据和地址
  • 原文地址:https://www.cnblogs.com/yoyo008/p/12938040.html
Copyright © 2020-2023  润新知