版权声明:学习是一种信仰。喜欢就拿去,送人玫瑰手有余香。 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">总: {{ task_list.paginator.num_pages }} 页</span> </li> <li><span style="color: #0a0a0a"> Task数量: {{ task_count }}</span> </li> </nav> </div>