django-pure-paginations是一个第三方的分页插件

安装 django-pure-pagination

pip install django-pure-pagination

在settings里的INSTALLED_APPS下新增如下

INSTALLED_APPS = [
    'pure_pagination',
]

在views中使用

#引入
from pure_pagination import Paginator, EmptyPage, PageNotAnInteger

class UserHistoryView(LoginRequiredMixin,ListView):
    '''登录日志'''
    queryset = UserLog.objects.all().order_by('-login_time')
    template_name = 'users/user_history.html'
    # context_object_name = 'user_history'

    def get_context_data(self, **kwargs):
   #分页开始
        try:
            page = self.request.GET.get('page', 1)
        except PageNotAnInteger:
            page = 1
            # 这里指从all中取10个出来,每页显示10个
        p = Paginator(self.queryset, 10, request=self.request)
        page_list = p.page(page)
        print(page_list)
        context = {
            "platform_active": "active",
            "user_log_active": "active",
            #返回给模板
            "page_list":page_list,
        }
        kwargs.update(context)
        return super(UserHistoryView, self).get_context_data(**kwargs)

模板中使用

       
{% for user_history in page_list.object_list %} {% endfor %}
ID 用户 客户端 来源IP 城市 登录时间
{{ user_history.id }} {{ user_history.username }} {{ user_history.user_agent }} {{ user_history.ip }} {{ user_history.city }} {{ user_history.login_time }}
#分页开始
    {% if page_list.has_previous %}
  • 上一页
  • {% endif %} {% for page in page_list.pages %} {% if page %} {% ifequal page page_list.number %}
  • {{ page }}
  • {% else %}
  • {{ page }} {% endifequal %} {% else %}
  • ...
  • {% endif %} {% endfor %} {% if page_list.has_next %}
  • 下一页
  • {% endif %}

分页效果