【发布时间】:2017-09-12 01:45:15
【问题描述】:
Django 的 Paginator 是否可以使用 Python 生成器?
例如,假设我有一个生成器,它会自动对 API 的请求分页,如下所示:
def get_response():
page_one = requests.get('http://example.com/json?page=1')
for item in page_one:
yield item
page_two = requests.get('http://example.com/json?page=2')
for item in page_two:
yield item
可以扩展 Django 的 Paginator 以支持此生成器吗?
generator = get_response()
paginator = Paginator(generator, 10)
我知道这种方法会奏效:
paginator = Paginator(list(generator), 10)
我的理解是直接传递生成器会更有效,因为 API 客户端在需要之前不会发出请求。虽然我知道分页器需要 count() 或 __len__() 方法,这可能会使这不可能。
【问题讨论】:
-
Alex,您需要更新您的个人资料...
-
除了长度检查之外,分页器还使用切片表示法来获取每个页面。我认为你最终会重新实现分页器的很大一部分,以改变它在可以合理有效地处理这两种情况的东西上工作的假设。
标签: python django pagination generator paginator