首页
学习
活动
专区
圈层
工具
发布
37 篇文章
1
python-Django-安装与配置(一)
2
python-Django-安装与配置(二)
3
python-Django-基础概念(一)
4
python-Django-基础概念(二)
5
python-Django 模型层-模型层简介
6
python-Django 模型层-模型层示例
7
python-Django-命令行工具
8
python-Django 模型层-模型层的字段类型
9
python-Django-Django 模型层的关联关系(一)
10
python-Django-Django 模型层的关联关系(二)
11
python-Django-Django 数据库迁移(一)
12
python-Django-Django 数据库迁移(二)
13
python-Django-Django 视图层简介(一)
14
python-Django-Django 视图层简介(二)
15
python-Django-URL 路由(一)
16
python-Django-URL 路由(二)
17
python-Django-视图函数(一)
18
python-Django-视图函数(二)
19
python-Django-Django 模板引擎(一)
20
python-Django-Django 常用模板标签和过滤器(一)
21
python-Django-Django 常用模板标签和过滤器(二)
22
python-Django-表单基础概念
23
python-Django-Django 表单简介
24
python-Django-表单验证(一)
25
python-Django-表单验证(二)
26
python-Django-文件上传(一)
27
python-Django-文件上传(二)
28
python-Django-文件上传(三)
29
python-Django 高级特性-Django 中间件(一)
30
python-Django 高级特性-Django 中间件(二)
31
python-Django 高级特性-Django 缓存(一)
32
python-Django 高级特性-Django 缓存(二)
33
python-Django 高级特性-Django 分页(一)
34
python-Django 高级特性-Django 分页(二)
35
python-Django 高级特性-Django 异步任务(一)
36
python-Django 高级特性-Django 安全(一)
37
python-Django 高级特性-Django 安全(二)
清单首页django文章详情

python-Django 高级特性-Django 分页(二)

分页示例

下面是一个完整的分页示例,演示如何使用Django的分页功能来呈现数据库中的对象列表。假设我们有一个简单的博客应用程序,其中有一个Post模型表示博客文章。我们想要在网站上显示最近的10篇文章,并在每页中显示5篇文章。下面是我们如何实现分页:

代码语言:javascript
复制
from django.core.paginator import Paginator
from django.shortcuts import render
from myapp.models import Post

def post_list(request):
    posts = Post.objects.order_by('-created_at')[:10]
    paginator = Paginator(posts, 5)
    page_number = request.GET.get('page')
    page = paginator.get_page(page_number)
    return render(request, 'post_list.html', {'page': page})

在上面的代码中,我们首先获取最近的10篇文章,并按照创建时间的逆序进行排序。然后,我们使用Paginator对象创建一个分页对象,并将每页显示的文章数量设置为5。接下来,我们从请求的GET参数中获取页码,并使用get_page方法获取当前页的文章列表。最后,我们将分页对象作为上下文传递给post_list.html模板进行呈现。

在模板中,我们可以使用以下代码来呈现分页链接和文章列表:

代码语言:javascript
复制
{% if page.has_previous %}
    <a href="?page={{ page.previous_page_number }}">上一页</a>
{% endif %}

{% for post in page %}
    <div>
        <h2>{{ post.title }}</h2>
        <p>{{ post.content }}</p>
    </div>
{% endfor %}

{% if page.has_next %}
    <a href="?page={{ page.next_page_number }}">下一页</a>
{% endif %}

在上面的代码中,我们首先使用page.has_previouspage.has_next方法检查是否有前一页和后一页。如果有,我们可以使用page.previous_page_numberpage.next_page_number方法获取前一页和后一页的页码。然后,我们使用for循环遍历当前页的文章,并将每篇文章的标题和内容呈现出来。最后,我们在页面底部再次检查是否有下一页,如果有,我们可以使用相同的方法获取下一页的页码。

下一篇
举报
领券