django 表单分页
<code> {% ifnotequal cur_page 1 %} <li> <a href="/product/pdt">|<</a></li> <li> <a href="/product/pdt?page_id={{ cur_page|add:-1 }}&{{ url }}"><span><</span></a> </li> {% else %} <li><span style="color: #d1d1d1;">|<</span></li> <li><span style="color: #d1d1d1;"><</span></li> {% endifnotequal %} <li> <a href="/product/pdt?page_id={{ cur_page }}&{{ url }}">{{ cur_page }}</a> </li> {% ifnotequal cur_page total_page %} <li> <a href="/product/pdt?page_id={{ cur_page|add:1 }}&{{ url }}">{{ cur_page|add:1 }}</a> </li> <li> <a href="/product/pdt?page_id={{ cur_page|add:2 }}&{{ url }}">{{ cur_page|add:2 }}</a> </li> {% endifnotequal %} {% if next %} <li> <a href="/product/pdt?page_id={{ cur_page|add:3 }}&{{ url }}"><span>></a> </li> {% else %} <li><span style="color: #d1d1d1;">></span></li> {% endif %} {% ifnotequal cur_page total_page %} <li> <a href="/product/pdt?page_id=%7B%7B%20total_page%20%7D%7D&%7B%7B%20url%20%7D%7D"><span>>|</span></a> </li> {% else %} <li><span style="color: #d1d1d1">>|</span></li> {% endifnotequal %}</code>
点击到最后一页,效果如下:
但实际上只有9页,判断next(即当前页是否存在下一页)标签时 加 3 溢出 到10页。
1、要求显示的页码范围数为3,不足的为2或者1;
请教该如何处理?
回复内容:
<code> {% ifnotequal cur_page 1 %} <li> <a href="/product/pdt">|<</a></li> <li> <a href="/product/pdt?page_id={{ cur_page|add:-1 }}&{{ url }}"><span><</span></a> </li> {% else %} <li><span style="color: #d1d1d1;">|<</span></li> <li><span style="color: #d1d1d1;"><</span></li> {% endifnotequal %} <li> <a href="/product/pdt?page_id={{ cur_page }}&{{ url }}">{{ cur_page }}</a> </li> {% ifnotequal cur_page total_page %} <li> <a href="/product/pdt?page_id={{ cur_page|add:1 }}&{{ url }}">{{ cur_page|add:1 }}</a> </li> <li> <a href="/product/pdt?page_id={{ cur_page|add:2 }}&{{ url }}">{{ cur_page|add:2 }}</a> </li> {% endifnotequal %} {% if next %} <li> <a href="/product/pdt?page_id={{ cur_page|add:3 }}&{{ url }}"><span>></a> </li> {% else %} <li><span style="color: #d1d1d1;">></span></li> {% endif %} {% ifnotequal cur_page total_page %} <li> <a href="/product/pdt?page_id=%7B%7B%20total_page%20%7D%7D&%7B%7B%20url%20%7D%7D"><span>>|</span></a> </li> {% else %} <li><span style="color: #d1d1d1">>|</span></li> {% endifnotequal %}</code>
点击到最后一页,效果如下:
但实际上只有9页,判断next(即当前页是否存在下一页)标签时 加 3 溢出 到10页。
1、要求显示的页码范围数为3,不足的为2或者1;
请教该如何处理?
在Paginator上再封装一层Spagination ,Views调用
<code>obj = Model.object.filter(条件) pagin = Spagination.wraper(obj, pageSize, page) return pagin </code>
Spagination类代码
<code>#coding=utf-8 from django.core.paginator import Paginator class Spagination(object): def __init__(self, total, page=1, perpage=10): self.total = total self.pages = self.total / perpage + 1 if (self.total % perpage) > 0 else self.total / perpage self.page = page self.perpage = perpage self.prev_num = page-1 if page > 1 else None self.next_num = page+1 if page*perpage 0: left_list.insert(0, self.page - p) for p in range(1,right_edge): if self.page + p 0: left_list.insert(0, left_list[0]-1) return left_list+[self.page]+right_list def setItems(self, items): self.items = items @classmethod def wraper(cls, objs, limit, current_page): paginator = Paginator(objs, limit) items = paginator.page(current_page) pagin = Spagination(paginator.count, current_page, limit) pagin.setItems(items) return pagin</code>
template代码
<code><div class="pagerbox"> {%if pagin.has_prev %} <a href="javascript:void(0)" page="{{pagin.prev_num}}">上页</a> {%endif%} <a href="javascript:void(0)" page="1" pagin.page="=">首页</a> {%for p in pagin.visible_pages%} {%if p != 1 and p != pagin.pages%} <a href="javascript:void(0)" page="{{ p }}" pagin.page="=" p>{{p}}</a> {%endif%} {%endfor%} <a href="javascript:void(0)" page="{{ pagin.pages }}" pagin.page="=" pagin.pages>尾页</a> {%if pagin.has_next %} <a href="javascript:void(0)" page="{{pagin.next_num}}">下页</a> {%endif%} </div></code>
可以再加一层判断,判断是否超出

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

JWT是一种基于JSON的开放标准,用于在各方之间安全地传输信息,主要用于身份验证和信息交换。1.JWT由Header、Payload和Signature三部分组成。2.JWT的工作原理包括生成JWT、验证JWT和解析Payload三个步骤。3.在PHP中使用JWT进行身份验证时,可以生成和验证JWT,并在高级用法中包含用户角色和权限信息。4.常见错误包括签名验证失败、令牌过期和Payload过大,调试技巧包括使用调试工具和日志记录。5.性能优化和最佳实践包括使用合适的签名算法、合理设置有效期、

C语言中没有内置求和函数,需自行编写。可通过遍历数组并累加元素实现求和:循环版本:使用for循环和数组长度计算求和。指针版本:使用指针指向数组元素,通过自增指针遍历高效求和。动态分配数组版本:动态分配数组并自行管理内存,确保释放已分配内存以防止内存泄漏。

Python和JavaScript开发者的薪资没有绝对的高低,具体取决于技能和行业需求。1.Python在数据科学和机器学习领域可能薪资更高。2.JavaScript在前端和全栈开发中需求大,薪资也可观。3.影响因素包括经验、地理位置、公司规模和特定技能。

distinct 和 distinguish 虽都与区分有关,但用法不同:distinct(形容词)描述事物本身的独特性,用于强调事物之间的差异;distinguish(动词)表示区分行为或能力,用于描述辨别过程。在编程中,distinct 常用于表示集合中元素的唯一性,如去重操作;distinguish 则体现在算法或函数的设计中,如区分奇数和偶数。优化时,distinct 操作应选择合适的算法和数据结构,而 distinguish 操作应优化区分逻辑效率,并注意编写清晰可读的代码。

在PHP8 中,match表达式是一种新的控制结构,用于根据表达式的值返回不同的结果。1)它类似于switch语句,但返回值而非执行语句块。2)match表达式使用严格比较(===),提升了安全性。3)它避免了switch语句中可能的break遗漏问题,增强了代码的简洁性和可读性。

PHP中的...(splat)操作符用于函数参数和数组解包,提升代码简洁性和效率。1)函数参数解包:将数组元素作为参数传递给函数。2)数组解包:将一个数组解包到另一个数组中或作为函数参数。

!x 的理解!x 是 C 语言中的逻辑非运算符,对 x 的值进行布尔取反,即真变假,假变真。但要注意,C 语言中真假由数值而非布尔类型表示,非零视为真,只有 0 才视为假。因此,!x 对负数的处理与正数相同,都视为真。

C语言标识符不能包含空格,因为会造成混乱和难以维护。具体规则如下:必须以字母或下划线开头。可包含字母、数字或下划线。不能包含非法字符(如特殊符号)。
