flask_分页展示模板及应用.md

本文详细介绍如何使用paginate方法进行高效分页查询,包括参数设置、返回值解析及宏封装,帮助开发者掌握分页对象的属性与方法,实现优雅的分页导航。

分页展示

  • 分页查询

    方法:paginate,分页查询方法
    	参数:
    		page:当前页码
    		per_page:每页多少条数据
    		error_out:当查询有误时是否报错,默认为True
    	返回值:
    		Pagination:分页对象,其中包含了分页的所有信息
    Pagination:
    	属性:
    		page:当前页码
    		per_page:每页显示多少条,默认为20条
    		pages:总页数
    		total:总条数
    		prev_num:上一页的页码
    		next_num:下一页的页码
    		has_prev:是否有上一页
    		has_next:是否有下一页
    		items:当前页的数据
    	方法:
    		iter_pages:存放了所有的在分页导航条上显示的页码,显示不完时返回None
    		prev:上一页的分页对象
    		next:下一页的分页对象
    
  • 封装分页显示的宏

    {% macro show_pagination(pagination, endpoint) %}
        <nav aria-label="Page navigation">
            <ul class="pagination">
                {# 上一页 #}
                <li {% if not pagination.has_prev %}class="disabled"{% endif %}>
                    <a href="{% if pagination.has_prev %}{{ url_for(endpoint, page=pagination.prev_num, **kwargs) }}{% else %}#{% endif %}" aria-label="Previous">
                        <span aria-hidden="true">&laquo;</span>
                    </a>
                </li>
    
                {# 中间页码 #}
                {% for p in pagination.iter_pages() %}
                    {% if p %}
                        <li {% if pagination.page == p %}class="active"{% endif %}><a href="{{ url_for(endpoint, page=p, **kwargs) }}">{{ p }}</a></li>
                    {% else %}
                        <li><a href="#">&hellip;</a></li>
                    {% endif %}
                {% endfor %}
    
                {# 下一页 #}
                <li {% if not pagination.has_next %}class="disabled"{% endif %}>
                    <a href="{% if pagination.has_next %}{{ url_for(endpoint, page=pagination.next_num, **kwargs) }}{% else %}#{% endif %}" aria-label="Next">
                        <span aria-hidden="true">&raquo;</span>
                    </a>
                </li>
            </ul>
        </nav>
    {% endmacro %}
    
  • 使用:

    {% from 'common/macro.html' import show_pagination %}
    
    {{ show_pagination(pagination, 'main.index', uid=3) }}
    
已知,项目的根目录下有一个文件夹"svm_train_images",里面可以保存多张扩展名可能为'.jpg', '.jpeg', '.png', '.bmp', '.webp'的图片,同时还存在一些非以上扩展名的配置文件。现在需要你帮我用Python编写一个Flask应用,进行图片和标签的管理。该应用需要实现以下功能或满足以下需求:1. 查看"svm_train_images"目录下的图片(和图片对应的标签),和图片的删除功能(图片比较多,你需要考虑分页)。2. 可以上传新的图片到"svm_train_images"文件夹内。3. 查看"svm_train_images"目录下的图片时,需要按照上传时间,以最后上传的放在首要位置查看,换而言之你需要以上传时间逆序排列图片。4. 上传新的图片时,需要上传者指定该图片是“正向样例”或者“反向样例”形成图片的标签。5. 图片的标签保存在"svm_train_images/labels.json",此文件内格式示例如下,图片新增和删除的时候需要更新此标签文件(文件名部分你可以根据你的需要调整): ```json { "4654f617a0b7665408df49ef17e414c1.jpg": "√", "269d6048fad09b3def3f8f58cec2bc46.jpg": "√", "1486c224c9926cdd5dafb43ff0749414.jpg": "×" } ``` 其中,符号"√"表示正向样例,符号"×"表示反向样例。你将应用的完整代码给我,如果一个文件不能给完整需要拆分多个文件,你需要告诉我每个文件的文件名、路径以及文件内的代码。你编写的是Demo,可以不需要权限校验之类的额外功能。
03-15
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值