如何在Django中为第三方REST服务进行分页/分页

时间:2011-03-16 09:16:05

标签: python django api rest pagination

以flickr为例,请求URL如下所示:

'http://api.flickr.com/services/rest/?&method=flickr.people.getPublicPhotos&api_key=' + settings.FLICKR_API_KEY + '&user_id=' + userid + '&format=json&per_page' + per_page + '&page=' + page + '&nojsoncallback=1'

其中page控制要显示的页面,per_page控制要返回的照片数量

为了简化问题,让我们修复per_page。所以我的问题是,如何实现一个允许用户在网页上随时转发或返回一页的分页系统?

我想我需要传递页码来遍历请求URL,以便显示正确的数据。所以我想我不知道如何将模板绑定到views.py。基本上,我正在寻找这个Rails question的Django版本。

到目前为止我遇到的示例和插件(例如django-pagination)主要处理数据库查询产生的分页。

2 个答案:

答案 0 :(得分:3)

Django-pagination将适用于任何对象列表 - 而不仅仅是来自数据库的调用。示例here实际上以一个与本地模型或数据库无关的示例开始。

对于API类型调用,您只需要将对象读入列表,然后根据该列表创建新的Paginator对象。您所要做的就是为每页提供所需的对象数量。这真的很简单。

答案 1 :(得分:0)

根据你的描述,我会说从page = 1开始。如果page = 1,你的页面中有一个链接继续,那将加载page = 2.如果你在任何其他页面而不是一个生成两个链接,一个用于前一个,另一个用于下一页,相对于当前的一个。

如果您需要更好的帮助,您必须向我们展示一些代码。