• 这是什么代码帮我看看


    # 传入当前页参数page,参数名称要与views.py中的调用方法的参数名称保持一致
    from django.urls import re_path

    from apps.page.views import IndexView

    urlpatterns = [
        re_path(r'^index(?P<page>\d+)$', IndexView.as_view(), name='index'),  # 数据分页
    ]

    # 调用方法def get(self, request, page)的参数page对应urls.py中的page
    from django.shortcuts import render
    from django.views.generic import View
    # 引入Paginator
    from django.core.paginator import Paginator

    # 引入的模型,需根据需求变换
    from apps.mail.models import User


    class IndexView(View):
        """数据分页显示"""

        def get(self, request, page):
            """分页显示"""

            # 根据业务需求从数据库里查询出数据

            shop_info = User.objects.all()
            # 对数据进行分页
            paginator = Paginator(shop_info, 1)  # 10表示每页显示10条
            # 获取第page页的内容,默认为第一页
            try:
                page = int(page)
            except Exception as e:
                page = 1

            if page > paginator.num_pages:
                page = 1
            # 获取第page页的Page实例对象
            shop_page = paginator.page(page)
            # 进行页码的控制,页面上最多显示5个页码
            # 1.总页数小于5页,页面上显示所有页码
            # 2.如果当前页是前3页,显示1-5页
            # 3.如果当前页是后3页,显示后5页
            # 4.其他情况,显示当前页的前2页,当前页,当前页的后2页
            num_pages = paginator.num_pages
            if num_pages < 5:
                pages = range(1, num_pages + 1)
            elif page <= 3:
                pages = range(1, 6)
            elif num_pages - page <= 2:
                pages = range(num_pages - 4, num_pages + 1)
            else:
                pages = range(page - 2, page + 3)

            # 构造数据并返回
            context = {'shop_page': shop_page, 'pages': pages}
            return render(request, 'page.html', context)

    <!DOCTYPE html>
    {% load staticfiles %}
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>数据分页</title>
        {# 引入Bootstrap框架 #}
    {#    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/
    bootstrap.min.css" integrity="sha384-/Y6pD6FV/Vv2HJnA6t+vslU6fwYXjCFtcEpHbNJ0lyAFsXTsjBbfaDjzALeQsN6M"
    crossorigin="anonymous">#}
    {#    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js"></script>#}
        <link href="{% static 'css/inc.css' %}" rel="stylesheet" type="text/css">
        {# 也可在自己项目的main.css中添加如下代码 #}
    {#    #main .pagenation{height:32px;text-align:center;font-size:0;margin:30px auto;}#}
    {#    #main .pagenation a{display:inline-block;border:1px solid #d2d2d2;background-color:
    #f8f6f7;font-size:12px;padding:7px 10px;color:#666;margin:5px;}#}
    {#    #main .pagenation .active{background-color:#fff;color:#43a200;}#}
    </head>
    <body class="container">


    {#页码部分#}
    {#page对象的属性和方法#}
    {#Page.object_list  包含当前页的所有对象列表#}
    {#Page.number       当前页的页码,从1开始#}
    {#Page.has_next()   是否有下一页,若有返回True#}
    {#Page.has_previous()  是否有上一页,若有返回True#}
    {#Page.has_other_pages()  是否有下一页或上一页,若有返回True#}
    {#Page.next_page_number() 返回下一页的页码#}
    {#Page.previous_page_number() 返回上一页的页码#}
    {#Page.start_index()  返回当前页的第一个对象在所有对象列表中的序号#}
    {#Page.end_index()  返回当前页的最后一个对象在所有对象列表中的序号#}

    {#在ul中遍历对象的时候记得要用已分页的数据即shop_page#}
    <ul>
        {% for item in shop_page %}
        <li>{{ item.id }}</li>
        {% endfor shop_page %}
    </ul>

    <div class="pagenation">{#该div写在刚刚遍历后的ul标签下方#}
       {%if shop_page.has_previous %}
       {#page 代表的是项目urls.py中注册的模块名称,适当调整为自己的#}
       <a href="{% url 'page:index' shop_page.previous_page_number %}"> < 上一页</a>
       {% endif %}
       
       {% for pindex in pages %}
          {% if pindex == shop_page.number %}
       <a href="{% url 'page:index' pindex %}" class="active">{{ pindex }}</a>
          {% else %}
       <a href="{% url 'page:index' pindex %}">{{ pindex }}</a>
          {% endif %}
       {% endfor %}
       
       {% if shop_page.has_next %}
       <a href="{% url 'page:index' shop_page.next_page_number %}">下一页 > </a>
       {% endif %}
    </div>
    </body>
    </html>

  • 相关阅读:
    开发那些事儿:利用C++下载视频及记录到数据库,出现数据库报错该如何解决?
    CAD/CAM/CAE SDK 国庆大放送:Eyeshot 2023.X Crack
    天线设计中的负载牵引
    python 性能优化实例练习二 —— 细节优化(ctypes等,未完)
    docker镜像制作
    AOP源码解析之二-创建AOP代理前传,获取AOP信息
    一文了解清楚kafka消息丢失问题和解决方案
    Rust更适合经验较少的程序员?
    求最大公约(因)数
    博途PLC增量式PID(支持正反作用和归一化输出)
  • 原文地址:https://blog.csdn.net/Sapphire521/article/details/125513596