django实现分页(pure-pagination)

版权声明:学习是一种信仰。喜欢就拿去,送人玫瑰手有余香。 https://blog.csdn.net/huoyuanshen/article/details/83310274

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>

猜你喜欢

转载自blog.csdn.net/huoyuanshen/article/details/83310274