我有一个我正在处理的美味 api,并且在我的 api 资源的列表视图中,我想在不应用分页的情况下获取整个数据列表,无论列表中的对象数量如何。我不需要具有上限的自定义分页器,我想完全禁用分页。
我可能会修改我的客户端以处理分页(API 是从 C++ DLL 而不是 Web 浏览器访问的,所以它有点复杂但可能)但如果我可以禁用它会更容易。
是否有一个开关可以禁用不同资源的分页器,或者可能有一个 api 范围的开关来禁用注册到该 api 对象的所有资源的分页?
我有一个我正在处理的美味 api,并且在我的 api 资源的列表视图中,我想在不应用分页的情况下获取整个数据列表,无论列表中的对象数量如何。我不需要具有上限的自定义分页器,我想完全禁用分页。
我可能会修改我的客户端以处理分页(API 是从 C++ DLL 而不是 Web 浏览器访问的,所以它有点复杂但可能)但如果我可以禁用它会更容易。
是否有一个开关可以禁用不同资源的分页器,或者可能有一个 api 范围的开关来禁用注册到该 api 对象的所有资源的分页?
为此,您需要设置至少两个不同的东西。
在站点设置文件中,设置
API_LIMIT_PER_PAGE = 0
在要禁用分页的资源元类中,设置:
class MyResource(ModelResource):
...
class Meta:
...
max_limit = None
然后,如果您导航到资源的列表视图,返回的内容应该显示限制为 0。
另一种解决方案是定义 DummyPaginator 类(最初在此处描述:https ://github.com/toastdriven/django-tastypie/issues/777 ),它应该是tastepie的一部分(但不幸的是......):
class DummyPaginator(object):
def __init__(self, request_data, objects, resource_uri=None,
limit=None, offset=0, max_limit=1000,
collection_name='objects'):
self.objects = objects
self.collection_name = collection_name
def page(self):
return { self.collection_name: self.objects, }
然后,在您的资源 Meta 中,您设置:
paginator_class = DummyPaginator