django - 制表符和 Django Rest 框架 - 远程分页错误
问题描述
我在弄清楚如何使用分页Tabulator 4.9
以及如何DRF 3.1.2
使用分页相互协作时遇到了一些问题。page size
一切正常,直到我使用Tabulator
which
我使用了一个简单的DRFGenericViewSet
和:ListModelMixin
RetrieveModelMixin
class ProductViewSet(RetrieveModelMixin, ListModelMixin, GenericViewSet):
serializer_class = ProductSerializer
lookup_field = "number"
def get_queryset(self):
try:
return Product.objects.all()
except:
return None
def retrieve(self, request, serial = None):
try:
query = Product.objects.filter(serial = serial)
results = ProductSerializer(data = query, many = True)
results.is_valid()
return Response(data = results.data, status = status.HTTP_200_OK)
except Exception as E:
return Response(data = f"""{E}""", status = status.HTTP_400_BAD_REQUEST)
我还在主项目文件夹中定义了一个 paginaton.py:
from rest_framework import pagination
class PageNumberPaginationWithCount(pagination.PageNumberPagination):
def get_paginated_response(self, data):
response = super(PageNumberPaginationWithCount, self).get_paginated_response(data)
response.data['last_page'] = self.page.paginator.num_pages
return response
并将其添加到 settings.py 中:
REST_FRAMEWORK = {
'DEFAULT_RENDERER_CLASSES': (
'rest_framework.renderers.JSONRenderer',
'rest_framework.renderers.BrowsableAPIRenderer',
),
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.SessionAuthentication',
],
'DEFAULT_PAGINATION_CLASS': 'sstester3.pagination.PageNumberPaginationWithCount',
'PAGE_SIZE': 25
}
在表格的 js 中,我使用了远程设置的分页:
let cols = [{title: "number", field: "number"},
{title: "name", field: "name"}]
var table = new Tabulator("#producttable", {
layout: "fitColumns",
pagination: "remote",
paginationSize: 25,
paginationSizeSelector: [50, 100],
ajaxURL: "api/products",
paginationDataReceived: {"data": "results"},
columns: cols
});
加载并从页面跳转到页面时,一切都很好。我认为这是因为PAGE_SIZE
并且paginationSize
都设置为25
. 如果我使用网站上的设置,我会在所有页面上50
看到20
下面只有一些空白的项目n-1
。n
只有n
第页有25
项目。
解决方案
推荐阅读
- algorithm - 插入排序算法许可操作
- linux - 无法在 amazon linux 实例上安装 docker
- prometheus - 无法使用 promethues 自定义计数器查询准确的详细信息
- android - GPS 位置始终返回 null
- javascript - 在 Internet Explorer 中的页面加载上使用 JavaScript 或 jQuery 以编程方式触发按钮单击事件
- java - 通过开源java库将html转换为java中的RTF的最佳方法是什么
- android-management-api - 如何知道(服务器端)设备何时注册?
- python - While 循环仅循环一小部分代码,而不是实际在 while 循环中的所有代码
- angular - Openseadragon mouse:down & mouse:up 不工作,但在设计启用后仍然可以工作
- python-3.x - 所有级别的自定义格式化程序不再适用于 Python3