我不想對不需要計數的視圖運行計數查詢。我怎樣才能關閉它?
我在 stackoverflow 上的另一篇文章中找到了以下解決方法。計數查詢未觸發,但我可以看到沒有資料的頁面。(我最多可以看到 ?page=10000,即使只有大約 10 頁。)
#settings.py
REST_FRAMEWORK = {
"DEFAULT_PAGINATION_CLASS": "rest_framework.pagination.PageNumberPagination",
"PAGE_SIZE": 20,
...
}
import sys
from django.core.paginator import Paginator
from django.utils.functional import cached_property
from rest_framework.pagination import PageNumberPagination
class CustomPaginatorClass(Paginator):
@cached_property
def count(self):
return sys.maxsize
class CustomPagination(PageNumberPagination):
django_paginator_class = CustomPaginatorClass
uj5u.com熱心網友回復:
如果頁面不包含以下任何元素,您可以引發 HTTP 404:
from rest_framework.exceptions import NotFound
class CustomPagination(PageNumberPagination):
django_paginator_class = CustomPaginatorClass
def paginate_queryset(self, queryset, request, view=None):
data = super().paginate_queryset(queryset, request, view=view)
if not data:
raise NotFound('No data found for this page')
return data
這將通過一個查詢獲取分頁資料,然后我們檢查是否至少有一個元素。如果不是這樣,我們知道我們正在使用的頁面不應該存在。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/406266.html
標籤:
