• 批量插入/分页器


    def ab_pl(request):
        # 先给Book插入一万条数据
        # for i in range(10000):
        #     models.Book.objects.create(title='第%s本书'%i)
        # # 再将所有的数据查询并展示到前端页面
        book_queryset = models.Book.objects.all()
    
        # 批量插入
        # book_list = []
        # for i in range(100000):
        #     book_obj = models.Book(title='第%s本书'%i)
        #     book_list.append(book_obj)
        # models.Book.objects.bulk_create(book_list)
        """
        当你想要批量插入数据的时候 使用orm给你提供的bulk_create能够大大的减少操作时间
        :param request: 
        :return: 
        """
        return render(request,'ab_pl.html',locals())

    分页器

    """
    总数据100 每页展示10 需要10
    总数据101 每页展示10 需要11
    总数据99 每页展示10  需要10
    
    如何通过代码动态的计算出到底需要多少页?
    
    
    在制作页码个数的时候 一般情况下都是奇数个        符合中国人对称美的标准
    """
    # 分页
        book_list = models.Book.objects.all()
    
        # 想访问哪一页
        current_page = request.GET.get('page',1)  # 如果获取不到当前页码 就展示第一页
        # 数据类型转换
        try:
            current_page = int(current_page)
        except Exception:
            current_page = 1
        # 每页展示多少条
        per_page_num = 10
        # 起始位置
        start_page = (current_page - 1) * per_page_num
        # 终止位置
        end_page = current_page * per_page_num
    
        # 计算出到底需要多少页
        all_count = book_list.count()
    
        page_count, more = divmod(all_count, per_page_num)
        if more:
            page_count += 1
    
        page_html = ''
        xxx = current_page
        if current_page < 6:
            current_page = 6
        for i in range(current_page-5,current_page+6):
            if xxx == i:
                page_html += '<li class="active"><a href="?page=%s">%s</a></li>'%(i,i)
            else:
                page_html += '<li><a href="?page=%s">%s</a></li>'%(i,i)
    
    
    
        book_queryset =  book_list[start_page:end_page]
        
    """
    django中有自带的分页器模块 但是书写起来很麻烦并且功能太简单
    所以我们自己想法和设法的写自定义分页器
    
    上述推导代码你无需掌握 只需要知道内部逻辑即可
    
    我们基于上述的思路 已经封装好了我们自己的自定义分页器 
    之后需要使用直接拷贝即可
    """

    自定义分页器的拷贝及使用

    """
    当我们需要使用到非django内置的第三方功能或者组件代码的时候
    我们一般情况下会创建一个名为utils文件夹 在该文件夹内对模块进行功能性划分
        utils可以在每个应用下创建 具体结合实际情况
    
    我们到了后期封装代码的时候 不再局限于函数
    还是尽量朝面向对象去封装
    
    我们自定义的分页器是基于bootstrap样式来的 所以你需要提前导入bootstrap
        bootstrap 版本 v3
        jQuery        版本 v3
    """
    # 后端
    book_queryset = models.Book.objects.all()
    current_page = request.GET.get('page',1)
    all_count = book_queryset.count()
    # 1 传值生成对象
    page_obj = Pagination(current_page=current_page,all_count=all_count)
    # 2 直接对总数据进行切片操作
    page_queryset = book_queryset[page_obj.start:page_obj.end]
    # 3 将page_queryset传递到页面 替换之前的book_queryset
    
    
    # 前端
    {% for book_obj in page_queryset %}
        <p>{{ book_obj.title }}</p>
        <nav aria-label="Page navigation">
    </nav>
    {% endfor %}
    {#利用自定义分页器直接显示分页器样式#}
    {{ page_obj.page_html|safe }}
      
    """
    你们只需要掌握如何拷贝使用 以及大致的推导思路即可
    """
  • 相关阅读:
    使用iOS网络请求
    Invalid RNPermission 'ios.permission.xxx'. should be one of: ( )
    React Native 报错 Error: spawn EACCES 权限
    React Native 适配Android物理返回键,实现连续两次点击退出
    图解:平衡二叉树,AVL树
    NOIP 骗分技巧
    P1004 方格取数
    5. 最长回文子串
    全链路压测自动化实践
    深度学习在美团配送ETA预估中的探索与实践
  • 原文地址:https://www.cnblogs.com/mayrain/p/13069141.html
Copyright © 2020-2023  润新知