那就开始今天的教程吧
1.本节课以Bootstrap的这个框架中提供的组件来完成查询功能,所有的前端框架都会提供分页的组件,从nav这个地方来复制,把这个标签复制替换掉,然后在这个基础上来完成常规的分页组件,可以控制它的样式,
中间会有一个当前页,假设现在当前页设为第三页,就加一个class,有上一页下一页,跟简单翻页的区别在于它会显示出页码,它会知道当前是第几页。
2.这些页码Django是没有办法自动计算的,可以自己手工算一下,只要把这些页计算出来返回给前端,然后用变量来替换的这一部分展示的内容,将每一个链接替换上就可以了,刚才配置object里边的number,
就是当前页给大家打印过,会根据当前页和显示总页数来计算出左边还有几页右边还有几页,要做的是在view中把这些东西计算出来之后返回给前台,再来画这个页面。
3.回到views中,当前页是否有上一页给它注释掉,需要知道一共有几页,才能知道当前页所在整个页中所处的位置,除了当前页之外还要拿到总页数,【total page context.get】,还有一个变量叫paqination,
去拿它的属性叫num-pages,就是拿它的总页数打印一下,总页数叫total page。
4.刷新一下前面的页面,当前总页数4,再改成1,前面有几页,后面有几页是动态的,它有一定的计算的规则在里边,所以必须写一个方法来计算,现在给出计算的结果,比方说用一个列表来表示,
比方说【priverlist】或者叫prelist,定一个空列表,最终要计算的结果就放在前面有几页,然后nextlist后面有几页。
5.要定义一个变量【pagenumber】,就是在这个位置要显示几个页码,比方说5个或者是7个都可以,要计算prelist里边有几个,Next里边有几个,根据前面得到的当前页总页数和一共显示几页来的,
要计算中位数,比如说一共是显示5个页签,那么half用 pagenum,整除上一个二会得到一个中位数,这个中位数就是2。
6.写for循环For in range拿到当前页,剪掉一个half开始,然后遍历到当前页,如果i大于等于1,要过掉页码是0或者是负数的这种情况,遍历到当前页并且不包含当前页,这个range函数是最基础的生成数字序列的方法,
如果同学有推导式的概念,prelist应该等于一个列表的推导式,for n这里边然后if,x大于等于1,这一行代码就能代替这三行,这个是Python的一个特性。