zoukankan      html  css  js  c++  java
  • django 的分页器Paginator ,从django中导入类

    先创建表,然后生成批量数据。

    在models文件里

    from django.db import models
    
    # Create your models here.
    
    
    class Book(models.Model):
    
        name = models.CharField(max_length=32)
        price = models.DecimalField(max_digits=5,decimal_places=2)

    然后执行python manage.py makemigrations   ,python migrate 生成数据库。把数据库从左边拉到右边,

    在url里创建showBooks视图函数API,

    
    
    from django.conf.urls import url
    from django.contrib import admin
    
    from app01 import views
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'^index/', views.index),
        url(r'^ajaxHandle/', views.ajaxHandle),
        url(r'^showBooks/', views.showBooks),-------
    
    

    在views文件中创建showBooks 函数,批量导入数据,用bulk_create()

    从django中导入Paginstor类,用对象调用方法,

     1 def showBooks(requests):
     2 
     3     #批量导入数据bulk_create()方法
     4 
     5     # book_list=[]#里面存一个个对象
     6     # for i in range(100):
     7     #     book_list.append(Book(name="book%s"%i,price=2+i+2))
     8     #
     9     # Book.objects.bulk_create(book_list)
    10 
    11     book_list_all = Book.objects.all()
    12 
    13     #分页器Paginator,是导入了一个类,在用实列出来的对象调用方法,
    14     from django.core.paginator import Paginator,EmptyPage,PageNotAnInteger
    15 
    16     #book_list_all 是要被分页的对象,第二个参数,是每页显示的条数
    17     p = Paginator(book_list_all,20)# p就是每页的对象,
    18     p.count  #数据总数
    19     p.num_pages  #总页数
    20     p.page_range#[1,2,3,4,5],得到页码,动态生成,
    21 
    22     page_num = requests.GET.get("page")#以get的方法从url地址中获取
    23     #如果输错了页码,
    24     try:
    25         book_list = p.page(page_num)#括号里的是页数,显示指定页码的数据,动态显示数据,所以不能写死了
    26 
    27     except PageNotAnInteger:#如果输入页码错误,就显示第一页
    28         book_list = p.page(1)
    29     except EmptyPage:#如果超过了页码范围,就把最后的页码显示出来,
    30         book_list = p.page(p.num_pages)
    31 
    32     return render(requests,"showBooks.html",locals())

    数据库生成数据

    在templates 创建showBooks页面,把数据库数据渲染出来

    {% load staticfiles %}
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <link rel="stylesheet" href="{% static 'bootstrap/css/bootstrap.css' %}">
    
    
    </head>
    <body>
    
    <ul>
    {#request 也可以在这里渲染出来#}
        {% for book in book_list %}
            <li>{{ book.id }}&nbsp&nbsp&nbsp&nbsp&nbsp{{ book.name }}&nbsp&nbsp&nbsp&nbsp&nbsp{{ book.price }}</li>
        {% endfor %}
    
    
    </ul>
    
    
          <ul class="pagination">
              {% if book_list.has_previous %}
            <li><a href="/showBooks/?page={{ book_list.previous_page_number }}">上一页</a></li>  ---直接使用方法,上一页,
            {% else %}
            <li class="disabled"><a href="#">上一页</a></li>
              {% endif %}
    
          {% for num in p.page_range %}
            <li><a href="/showBooks/?page={{ num }}">{{ num }}</a></li>
          {% endfor %}
    
            {% if book_list.has_next %}
            <li><a href="/showBooks/?page={{ book_list.next_page_number }}">下一页</a></li>
          {% else %}
            <li class="disabled"><a href="#">下一页</a></li>
            {% endif %}
    
          </ul>
    
    
    </body>
    
    </html>
  • 相关阅读:
    fescar源码解析系列(一)之启动详解
    dubbo源码解析二 invoker链
    dubbo源码解析一
    CSP-S 2021 游记
    使用SpEL记录操作日志的详细信息
    Router 重定向和别名是什么?
    vue项目做seo(prerender-spa-plugin预渲染)
    vue3.0初体验有哪些实用新功能
    uniapp弹窗踩坑
    Spring boot application.properties 配置
  • 原文地址:https://www.cnblogs.com/gyh04541/p/7956109.html
Copyright © 2011-2022 走看看