Django 分页 , 只显示最近的几页( 只显示靠近的几页 )

1 篇文章 0 订阅
1 篇文章 0 订阅

Django 分页 , 只显示最近的页数( 只显示靠近的页数, 最多显示n页 )

我不知道怎么说, 但是这个标题你在搜索引擎搜的时候应该能搜到

其实我前不久看到过更简单更直接的方法, 但是当时没做笔记, 然后后面找不到了, 现在很后悔,

我是使用Template的(基本可以实现大部分逻辑)

views.py

    # (ListView)
    def get_context_data(self, **kwargs):
        context_data = super().get_context_data(**kwargs)
        context_data['max_left_item_count'] = '2'
        return context_data

templates


    {% if is_paginated %}
        <nav aria-label="Page navigation ">
            <ul class="pagination  justify-content-end">
                {% if page_obj.has_previous %}
                    {% if page_obj.number >= max_left_item_count|add:max_left_item_count %}
                        <li  class="page-item"><a class="page-link" href="?page=1">&laquo;&laquo;</a></li>
                    {% endif %}
                    <li  class="page-item"><a class="page-link" href="?page={{ page_obj.previous_page_number }}">&laquo;</a></li>
                {% endif %}


                {% for i in page_obj.paginator.page_range %}
                    {% if page_obj.number == i %}
                        <li class="page-item active">
                            <span  class="page-link" >{{ i }} <span  class="sr-only page-link">(current)</span></span>
                        </li>
                    {%  elif  page_obj.number|add:max_left_item_count >= i and  i|add:max_left_item_count  >= page_obj.number  %}
                        <li  class="page-item"><a class="page-link" href="?page={{ i }}">{{ i }}</a></li>
                    {% endif %}
                {% endfor %}

                {% if page_obj.has_next %}
                    <li  class=" page-item"><a class="page-link" href="?page={{ page_obj.next_page_number }}">&raquo;</a></li>
                    {% if  page_obj.paginator.num_pages >  page_obj.number|add:max_left_item_count  %}
                        <li  class=" page-item"><a class="page-link" href="?page={{ page_obj.paginator.num_pages }}">&raquo;&raquo;</a></li>
                    {% endif %}
                {% endif %}


            </ul>
        </nav>
        <span class="float-right">
            {{ page_obj.number }} / {{ page_obj.paginator.num_pages }}
        </span>
    {% endif %} 
    

顺便给大家分享一下存储函数

import hashlib
from django.core.files.storage import FileSystemStorage
class FunFileStorage(FileSystemStorage):
    def _save(self, name, content):
        sha256 = hashlib.sha256()
        for chunk in content.chunks():
            sha256.update(chunk)
        name =  sha256.hexdigest() 

        full_path = super().path(name)
        
        # 这里大约能给你节约 0.1% 的磁盘空间, 别问我怎么知道
        if( os.path.exists( full_path )):
            return name

        return super()._save(name, content)
    

settings.py


DEFAULT_FILE_STORAGE = 'xxx.xxx.FunFileStorage'

 

我在念大学, 一元 五角 一分 都可以, 真心感谢, 谢谢, 谢谢

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值