Django搭建个人博客:文章分页

利用轮子

写一个完善的分页功能是有些难度的,好在Django已经帮你准备好一个现成的分页模块了(Django把大部分基础功能都替你准备好了!)。内置模块虽然简单,但是对博客来说完全足够了。

我们要用到的是Paginator类。在Shell中可以充分尝试它的用法:

有了这个类,剩下的工作就是把它应用到项目中去。

轻车熟路

要对文章列表分页,因此就要修改article/views.py的def article_list()视图:

在视图中通过Paginator类,给传递给模板的内容做了手脚:返回的不再是所有文章的集合,而是对应页码的部分文章的对象,并且这个对象还包含了分页的方法。

我们在前面的文章已经接触过一些将参数传递到视图的手段了:

通过POST请求将表单数据传递到视图

通过url将地址中的参数传递到视图

这里用到了另一种方法:在GET请求中,在url的末尾附上?key=value的键值对,视图中就可以通过request.GET.get('key')来查询value的值。

然后改写模板,在最末尾的</div>前面,加入分页的内容:

内容也比较简单,用到了前面的Shell中演示的部分方法,判断当前页所处的位置。

这样就行了!补充几篇文章(笔者共6篇),方便测试。刷新页面后是这样的:


视图中设置了每页只有1篇文章,所以就真的只有1篇了。

当然这只是为了测试,实际环境中肯定要远大于1篇的。

点击第2页的按钮后是这样的:

看到顶部地址栏中的变化了吗?

思考一下page是如何从模板传递到视图的。

猜你喜欢

转载自blog.csdn.net/qq_40925239/article/details/88740096