• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

django 表单分页

php 搞代码 4年前 (2022-01-25) 52次浏览 已收录 0个评论
文章目录[隐藏]

<body>

<code>                    {% ifnotequal cur_page 1 %}                        <li>|<</li>                        <li>                            <span><</span>                        </li>                    {% else %}                        <li><span style="color: #d1d1d1">|<</span></li>                        <li><span style="color: #d1d1d1"><</span></li>                    {% endifnotequal %}                    <li>                        {{ cur_page }}                    </li>                    {% ifnotequal cur_page total_page %}                        <li>                            {{ cur_page|add:1 }}                        </li>                        <li>                            {{ cur_page|add:2 }}                        </li>                    {% endifnotequal %}                    {% if next %}                        <li>                            <span>></span>                        </li>                    {% else %}                        <li><span style="color: #d1d1d1">></span></li>                    {% endif %}                    {% ifnotequal cur_page total_page %}                        <li>                            <span>>|</span>                        </li>                    {% else %}                        <li><span style="color: #d1d1d1">>|</span></li>                    {% endifnotequal %}</code>

点击到最后一页,效果如下:

但实际上只有9页,判断next(即当前页是否存在下一页)标签时 加 3 溢出 到10页。
1、要求显示的页码范围数为3,不足的为2或者1;
请教该如何处理?

回复内容:

<body>

<code>                    {% ifnotequal cur_page 1 %}                        <li>|<</li>                        <li>                            <span><</span>                        </li>                    {% else %}                        <li><span style="color: #d1d1d1">|<</span></li>                        <li><span style="color: #d1d1d1"><</span></li>                    {% endifnotequal %}                    <li>                        {{ cur_page }}                    </li>                    {% ifnotequal cur_page total_page %}                        <li>                            {{ cur_page|add:1 }}                        </li>                        <li>                            {{ cur_page|add:2 }}                        </li>                    {% endifnotequal %}                    {% if next %}                        <li>                            <span>></span>                        </li>                    {% else %}                        <li><span style="color: #d1d1d1">></span></li>                    {% endif %}                    {% ifnotequal cur_page total_page %}                        <li>                            <span>>|</span>                        </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-8from django.core.paginator import Paginatorclass 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 <= self.pages:                right_list.append(self.page + p)        if len(left_list) < left_edge and right_list:            for i in range(all-len(left_list)-len(right_list)-1):                if right_list[-1]+1 <= self.pages:                    right_list.append(right_list[-1]+1)        if len(right_list)  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 %}        上页   <p>+本文来源gao!%daima.com搞$代*!码9网(</p><strong>搞gaodaima代码</strong> {%endif%}    首页    {%for p in pagin.visible_pages%}        {%if p != 1 and p != pagin.pages%}            {{p}}        {%endif%}    {%endfor%}    尾页    {%if pagin.has_next %}        下页    {%endif%}</div></code>

可以再加一层判断,判断是否超出


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:django 表单分页

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址