如何在Django中为第三方REST服务实现分页

2 投票
2 回答
1589 浏览
提问于 2025-04-16 13:48

以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连接起来。总的来说,我在寻找Django中类似于这个Rails问题的解决方案。

到目前为止,我遇到的例子和插件(比如django-pagination)主要是处理数据库查询结果的分页。

2 个回答

0

根据你的描述,我建议你从页面1开始。如果当前是页面1,那么在这个页面上放一个链接,可以点击它去加载页面2。如果你在其他页面,比如页面2、3等,就要生成两个链接,一个是返回到上一页,另一个是前往下一页,这两个链接都是相对于你当前所在的页面来说的。

如果你想要更好的帮助,真的需要给我们看看你的代码。

3

Django的分页功能可以用在任何对象列表上,不仅仅是数据库里的数据。这个例子在这里其实一开始就用的是一个和本地模型或数据库无关的例子。

如果你是在做API调用,你只需要把你的对象放进一个列表里,然后根据这个列表创建一个新的分页器对象。你只需要告诉它每页想要显示多少个对象就可以了。其实这非常简单。

撰写回答