Django-page 分页

class ArticleListView(ListView):
    model = Article
    template_name = 'article_list.html'
    paginate_by = 20
    context_object_name = 'articles'
    ordering = 'create_time'
    page_kwarg = 'p'
    def get_context_data(self,**kwargs):
        #要获取上下文的数据 需要继承于父类
        context = super(ArticleListView,self).get_context_data(*kwargs)
        print("="*30)
        print(context)
        print("=" * 30)
        paginator = context.get('paginator') #获取context中的 paginator
        print(paginator.count) #151条数据
        print(paginator.num_pages) #8 分 8页
        print(paginator.page_range) #range(1, 9) 包含第一页 不包含第九页

Paginator常用属性和方法:

count:总共有多少条数据。

num_pages:总共有多少页。

page_range:页面的区间。比如有三页,那么就range(1,4)。

class ArticleListView(ListView):
    model = Article
    template_name = 'article_list.html'
    paginate_by = 20
    context_object_name = 'articles'
    ordering = 'create_time'
    page_kwarg = 'p'
    def get_context_data(self,**kwargs):
        #要获取上下文的数据 需要继承于父类
        context = super(ArticleListView,self).get_context_data(*kwargs)
        page_obj = context.get('page_obj')  从 context 中 获取 page_obj
        #http://127.0.0.1:9000/article/list/?p=7
        print(page_obj.has_next()) 是否还有下一页  True
        print(page_obj.has_previous()) 是否还有上一页 True
        print(page_obj.next_page_number()) 下一页的页码  8 

Page常用属性和方法:

has_next:是否还有下一页。
has_previous:是否还有上一页。
next_page_number:下一页的页码。
previous_page_number:上一页的页码。
number:当前页。
start_index:当前这一页的第一条数据的索引值。
end_index:当前这一页的最后一条数据的索引值。

html外链
<link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
</head>
<body>
<table border="1" cellpadding="1" cellspacing="0">
    <tr>
        <th>序号</th>
        <th>标题</th>
        <th>内容</th>
        <th>创建时间</th>
    </tr>
    {% for article in articles %}
     <tr>
        <td>{{ article.id }}</td>
        <td>{{ article.title }}</td>
        <td>{{ article.context }}</td>
        <td>{{ article.create_time }}</td>
     </tr>
    {% endfor %}
​
</table>
    <nav aria-label="Page navigation ">
        <ul class="pagination ">
            {% if page_obj.has_previous %}
                <li><a href="{% url 'article_list' %}?page={{                                       page_obj.previous_page_number }}">上一页</a></li>
            {% else %}
                <li><a href="javascript:void(0)">上一页</a></li>
            {% endif %}
             {# 中间的页码#}
            {% for page in paginator.page_range %}
                {% if page == page_obj.number %}
                    <li class="active"><a href="javascript:void(0)">{{ page }}</a></li>
                {% else %}
                    <li><a href="{% url 'article_list' %}?page={{ page }}">{{ page }}</a></li>
​
                {% endif %}
            {% endfor %}
             {% if page_obj.has_next %}
                <li><a href="{% url 'article_list' %}?page={{                                       page_obj.next_page_number }}">下一页</a></li>
            {% else %}
                <li><a href="javascript:void(0)">下一页</a></li>
            {% endif %}
​
​
​
        </ul>
    </nav>
</body>
</html>
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值