• Django分页器


    django提供了分页的工具,存在于django.core中

       Paginator  :数据分页工具

       Page:具体的某一页面

    Paginator:

    对象创建: Paginator(数据集,每一页数据数)

    属性:

    count:对象总数

    num_pages:页面总数

    page_range: 页码列表,从1开始

    方法:

    page(整数): 获得一个page对象

    常见错误:

    InvalidPage:page()传递无效页码

    PageNotAnInteger:page()传递的不是整数

    Empty:page()传递的值有效,但是没有数据

    Page:

    对象获得,通过Paginator的page()方法获得

    属性:

    object_list: 当前页面上所有的数据对象

    number: 当前页的页码值

    paginator: 当前page关联的Paginator对象

    方法:

    has_next() :判断是否有下一页

    has_previous():判断是否有上一页

    has_other_pages():判断是否有上一页或下一页

    next_page_number():返回下一页的页码

    previous_page_number():返回上一页的页码

    len():返回当前页的数据的个数

    实现分页:

    数据库的内容自己添加即可

    创建模型:

    1 class RequestLog(models.Model):
    2     r_ip = models.CharField(max_length=32)
    3     r_time = models.FloatField(default=0)

    视图函数:

    1 def get_log(request):
    2     logs = RequestLog.objects.all()
    3     paginator = Paginator(logs, 3)
    4     try:
    5         current_page = int(request.GET.get("page", 1))
    6         page = paginator.page(current_page)
    7     except EmptyPage:
    8         page=paginator.page(1)
    9     return render(request, 'logs.html', context=locals())

    路由注册:

    1 urlpatterns = [
    2     url(r'^getlog/', views.get_log),
    3 ]

    html分页:使用bootstrap,美化版分页

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>Logs</title>
     6     <script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js">
     7         integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa"
     8             crossorigin="anonymous"
     9     </script>
    10 </head>
    11 <body>
    12 <h2>Logs_ip</h2>
    13 <ul>
    14     {% for log in page.object_list %}
    15         <li>{{ log.r_ip }}</li>
    16     {% endfor %}
    17 </ul>
    18 <nav aria-label="Page navigation">
    19   <ul class="pagination">
    20     <li>
    21       <a href="?page={{ current_page|add:-1 }}" aria-label="Previous">
    22         <span aria-hidden="true">上一页</span>
    23       </a>
    24     </li>
    25       {% for item in paginator.page_range %}
    26           {% if current_page == item  %}
    27                <li class="active"><a href="?page={{ item }}">{{ item }}</a></li>
    28               {% else %}
    29                <li><a href="?page={{ item }}">{{ item }}</a></li>
    30           {% endif %}
    31       {% endfor %}
    32     <li>
    33       <a href="?page={{ current_page|add:+1 }}" aria-label="Next">
    34         <span aria-hidden="true">下一页</span>
    35       </a>
    36     </li>
    37   </ul>
    38 </nav>
    39 </body>
    40 </html>
    ------------------欢迎关注秀儿微博--->程序界第一佳丽
  • 相关阅读:
    大小端模式
    深入理解c/c++ 内存对齐
    示波器使用
    C结构体
    51单片机内存问题
    S5PV210启动过程详解1
    程序中内存从哪里来
    再论typedef
    ARM体系结构总结
    MMU实验实验
  • 原文地址:https://www.cnblogs.com/xiuercui/p/11674554.html
Copyright © 2020-2023  润新知