博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
django之分页,纯python代码
阅读量:5256 次
发布时间:2019-06-14

本文共 4227 字,大约阅读时间需要 14 分钟。

Django中分页

py文件代码

"""自定义分页组件可以返回分页的数据和分页的HTML代码"""from django.http import QueryDictclass Pagination(object):    def __init__(self, current_page, total_count, url_prefix, query_dict=QueryDict(mutable=True), per_page=10,                 show_page=9):        """        初始化分分页器        :param url_prefix: a标签的URL前缀        :param current_page: 当前页码数        :param total_count: 数据总数        :param query_dict: 空的QueryDict()对象,并且是可修改的        :param per_page: 每一页显示多少数据, 默认值是10        :param show_page: 页面显示的页码数, 默认值是9        """        # 0.分页的URL前缀        self.url_prefix = url_prefix        self.query_dict = query_dict        # 1. 每一页显示10条数据        self.per_page = per_page        assert per_page > 0        # 2. 计算需要多少页        total_page, more = divmod(total_count, per_page)        if more:            total_page += 1        self.total_page = total_page        # 3. 当前页码        try:            current_page = int(current_page)        except Exception as e:            current_page = 1        current_page = total_page if current_page > total_page else current_page        # 页码必须是大于0的数        if current_page < 1:            current_page = 1        self.current_page = current_page        # 4. 页面最多显示的页码数        self.show_page = show_page        # 5. 最多显示页码的一半        self.half_show_page = self.show_page // 2    @property    def start(self):        # 数据切片的开始位置        return self.per_page * (self.current_page - 1)    @property    def end(self):        # 数据切片的结束为止        return self.current_page * self.per_page    # 定义一个返回HTML代码的方法    def page_html(self):        # 如果总页码数小于最大要显示的页码数        if self.total_page < self.show_page:            show_page_start = 1            show_page_end = self.total_page        # 左边越界        elif self.current_page - self.half_show_page < 1:            show_page_start = 1            show_page_end = self.show_page        # 右边越界        elif self.current_page + self.half_show_page > self.total_page:            show_page_end = self.total_page            show_page_start = self.total_page - self.show_page + 1        else:            show_page_start = self.current_page - self.half_show_page            # 页面显示页码的结束            show_page_end = self.current_page + self.half_show_page        # 生成分页的HTML代码        page_list = []        # 添加分页代码的前缀        page_list.append('
') page_html = ''.join(page_list) return page_html

实例化对象

  1. def dashboard(request):    # 获取当前网页路径    url_prefix = request.path_info    # 获取当前页码数    current_page = request.GET.get('page', 1)    # 获取所有客户的信息    customer_list = Customer.objects.all()    # 实例分页代码    pagination = Pagination(current_page=current_page, total_count=customer_list.count(), url_prefix=url_prefix, per_page=8)    # 获取当前页的数据    data = customer_list[pagination.start:pagination.end]    page_html = pagination.page_html()    return render(request, "Dashboard.html", {'customer_list': data, "page_html": page_html})

前端代码

  1. {
    { page_html|safe }}

使用django脚本去创建数据

  1. 批量创建数据
    1. 使用Django脚本去创建数据
    2. bulk_create()
  2. 分页
    1. 纯Python基础写的,
    2. django里面获取当前url
      1. request.path_info 获取当前路径
      2. request.get_full_path 获取全路径

实际样式

转载于:https://www.cnblogs.com/yuncong/p/10471452.html

你可能感兴趣的文章
php函数每日学习二十个(第六天)
查看>>
hdu 4289 Control 网络流
查看>>
排球比赛的模拟赛
查看>>
linux 查看磁盘空间
查看>>
穷人的噩梦:来自金融公司的高利贷
查看>>
厌食?暴食?试试这个 VR 新疗法
查看>>
指针系统学习4-字符串与指针
查看>>
ssl layer 的实现
查看>>
HDU2001
查看>>
sql三维数据
查看>>
《写给大家看的CSS书》部分读书笔记
查看>>
【HHHOJ】ZJOI2019模拟赛(十二)03.03 解题报告
查看>>
bzoj3504: [Cqoi2014]危桥(网络流)
查看>>
iOS---设置输入框的光标位置
查看>>
20162318 《程序设计与数据结构》第九周学习总结
查看>>
asp.net MVC 根据原图片生成等比缩略图
查看>>
linux 复制目录结构,但不复制文件
查看>>
pomelo学习-chat聊天例子[server "gate-server-1" "gate" register master failed]错误解决
查看>>
bzoj1221: [HNOI2001] 软件开发
查看>>
自定义堆和栈
查看>>