django实现分页(pure-pagination)

1,安装相关包

安装:pip install django-pure-pagination

2,后端views代码:

from pure_pagination import PageNotAnInteger as p1
from pure_pagination import Paginator as p2
class TaskListAll(LoginRequiredMixin, ListView):
    template_name = 'rule/task-list.html'
    model = Task
    queryset = Task.objects.all().order_by('-id')
    # ordering = ('-id',)

    def get_context_data(self, **kwargs):
        try:
            page = self.request.GET.get('page', 1)
        except p1 as e:
            page = 1
            logger.error(e)

        p = p2(self.queryset, getattr(settings, 'DISPLAY_PER_PAGE') )
        asset_list = p.page(page)

        context = {
            "task_list": asset_list,
            'task_count':self.queryset.count()  if self.queryset != '' else  0,
        }
        kwargs.update(context)
        return super().get_context_data(**kwargs)

3,前端html模板:

<div style="text-align:center;">
    <nav class="pagination">
        <li><a href="{% url "rule:taskList" %}?page=1">首页 </a></li>
        {% if task_list.has_previous %}
            <li class="long"><a
                    href="?{{ task_list.previous_page_number.querystring }}">上一页</a>
            </li>
        {% endif %}
        {% for page in task_list.pages %}
            {% if page %}
                {% ifequal page task_list.number %}
                    <li class="active"><a href="?{{ page.querystring }}">{{ page }}</a>
                    </li>
                {% else %}
                    <li><a href="?{{ page.querystring }}" class="page">{{ page }}</a>
                    </li>
                {% endifequal %}
            {% else %}
                <li class="none"><a href="">...</a></li>
            {% endif %}
        {% endfor %}
        {% if task_list.has_next %}
            <il class="long"><a
                    href="?{{ task_list.next_page_number.querystring }}">下一页</a>
            </il>
        {% endif %}
        <li>
            <a href="{% url "rule:taskList" %}?page={{ task_list.paginator.num_pages }}">尾页 </a>
        </li>
        <li><span
                style="color: #0a0a0a">总: &nbsp;{{ task_list.paginator.num_pages }} 页</span>
        </li>
                                            <li><span
                style="color: #0a0a0a">  Task数量: {{ task_count }}</span>
        </li>
    </nav>
</div>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值