第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Django rest框架中ViewSet和GenericViewSet的區(qū)別

Django rest框架中ViewSet和GenericViewSet的區(qū)別

躍然一笑 2021-11-09 18:27:57
我有一個 Django 休息框架GenericViewset,我試圖為它設(shè)置分頁,如下所示:#settings.pyREST_FRAMEWORK = {    'DEFAULT_PAGINATION_CLASS':          'rest_framework.pagination.PageNumberPagination',    'PAGE_SIZE': 20}#views.pyclass PolicyViewSet(viewsets.GenericViewSet):    def list(self, request):        queryset = Policy.objects.all()        page = self.paginate_queryset(queryset)        serializer = PolicySerializer(page, many=True)        return self.get_paginated_response(serializer.data)這按預(yù)期工作。 但是,如果我嘗試使用普通的Viewset執(zhí)行相同的操作,如下所示:#views.pyclass PolicyViewSet(viewsets.ViewSet):    def list(self, request):        queryset = Policy.objects.all()        page = self.paginate_queryset(queryset)        serializer = PolicySerializer(page, many=True)        return self.get_paginated_response(serializer.data)我收到一條錯誤消息:'PolicyViewSet' 對象沒有屬性 'paginate_queryset'如何使用普通的Viewset設(shè)置分頁。DRF 中的 GenericViewset 和 Viewset 有什么區(qū)別?
查看完整描述

3 回答

?
紅顏莎娜

TA貢獻1842條經(jīng)驗 獲得超13個贊

只有在使用通用視圖或視圖集時才會自動執(zhí)行分頁

閱讀文檔

并回答你的第二個問題 DRF 中的 GenericViewset 和 Viewset 有什么區(qū)別

DRF 有兩個主要的處理視圖的系統(tǒng):

  1. APIView:這提供了一些處理方法,來處理HTTP動詞:getpost,putpatch,和delete

  2. ViewSet:這是對 APIView 的抽象,它提供操作作為方法:

    • list:只讀,返回多個資源(http 動詞:)get。返回一個字典列表。

    • retrieve:只讀,單一資源(http 動詞:get,但需要一個 id)。返回單個字典。

    • create:創(chuàng)建一個新的資源(HTTP動詞:post

    • update/partial_update:編輯資源(HTTP動詞:put/patch

    • destroy:刪除一個資源(HTTP動詞:delete

  3. GenericViewSetGenericViewSet有很多,最常見的是ModelViewSet. 他們繼承GenericAPIView并具有全面實施所有的行動listretrieve,destroy,updated,等等。當然,你也可以挑選其中的一些,閱讀文檔。


查看完整回答
反對 回復(fù) 2021-11-09
?
HUH函數(shù)

TA貢獻1836條經(jīng)驗 獲得超4個贊

也只是從 GenericViewSet 繼承。例如:


#views.py

class PolicyViewSet(viewsets.ViewSet, viewsets.GenericViewSet):

    def list(self, request):

        queryset = Policy.objects.all()

        page = self.paginate_queryset(queryset)

        serializer = PolicySerializer(page, many=True)

        return self.get_paginated_response(serializer.data)


查看完整回答
反對 回復(fù) 2021-11-09
?
慕哥9229398

TA貢獻1877條經(jīng)驗 獲得超6個贊

如何使用普通視圖集設(shè)置分頁?

如果你想在你的視圖集中使用“pagination_class”,那么你應(yīng)該使用GenericViewSet而不是ViewSet。


查看完整回答
反對 回復(fù) 2021-11-09
  • 3 回答
  • 0 關(guān)注
  • 421 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號