flask分页宏增加更多参数

背景:我正在开发一个博客,核心的两个model是文章和文章类别。

现在想要实现的功能是:点击一个文章类别,以分页的形式显示这个文章类别下的所有文章,类似这种效果。

参考的书中分页宏只接受页数这一个参数,经过尝试,成功给分页宏添加了文章类别参数,实现了上述功能。

posts.html

html 复制代码
{% extends "public/base.html" %}
{% import "public/macros.html" as macros %}

{% block content %}
    <div class="row" style="margin-top: 20px;">
        <div class="col-sm-4">
            {% include "public/categories.html" %}
        </div>
        {% if posts %}
            <div class="col-sm-8">
                {% include "public/_posts.html" %}
            <div style="text-align: center; margin-top: 20px;">
                {% if category %}
                    {{  macros.pagination_widget(pagination, '.posts', category.id) }}
                {% else %}
                    {{  macros.pagination_widget(pagination, '.posts', 0) }}
                {% endif %}
            </div>
        </div>
        {% endif %}
    </div>
{% endblock %}

关键代码

macros.html

python 复制代码
{% macro pagination_widget(pagination, endpoint, category_id) %}
        <ul class="pagination justify-content-center">
            <li {% if not pagination.has_prev %} class="page-item disabled" {% else %} class="page-item" {% endif %}>
                <a class="page-link" href="{% if pagination.has_prev %}{{ url_for(endpoint,
                page = pagination.page - 1, category_id = category_id, **kwargs) }}{% else %}#{% endif %}">
                Previous
                </a>
            </li>
                    {% for p in pagination.iter_pages() %}
                        {% if p %}
                            {% if p == pagination.page %}
                            <li class="page-item active">
                            <a class="page-link" href="{{ url_for(endpoint, page = p, category_id = category_id, **kwargs) }}">{{ p }}</a>
                            </li>
                            {% else %}
                            <li class="page-item">
                            <a class="page-link" href="{{ url_for(endpoint, page = p, category_id = category_id, **kwargs) }}">{{ p }}</a>
                            </li>
                            {% endif %}
                        {% else %}
                        <li class="page-item disabled"><a class="page-link" href="#">...</a></li>
                        {% endif %}
                    {% endfor %}
            <li {% if not pagination.has_next %} class="disabled page-item" {% else %} class="page-item"{% endif %}>
                <a class="page-link" href="{% if pagination.has_next %}{{ url_for(endpoint,
                page = pagination.page + 1, category_id = category_id, **kwargs) }}{% else %}#{% endif %}">
                Next
                </a>
            </li>
        </ul>
{% endmacro %}

关键代码

routes.py

python 复制代码
@app.route('/posts', methods=['GET', 'POST'])
@app.route('/posts/<int:category_id>', methods=['GET', 'POST'])
def posts(category_id=0):
    page = request.args.get('page', 1, type=int)
    if 0 != category_id:
        category = Category.query.get_or_404(category_id)
        pagination = Post.query.with_parent(category).order_by(Post.timestamp.desc()).paginate(page=page, per_page=10)
    else:
        category = None
        pagination = Post.query.order_by(Post.timestamp.desc()).paginate(page=page, per_page=10)
    posts = pagination.items
    categories = Category.query.all()
    return render_template('public/posts.html', posts=posts, pagination=pagination, categories=categories, category=category)

关键代码

相关推荐
code bean6 小时前
Flask图片服务在不同网络接口下的路径解析问题及解决方案
后端·python·flask
安得权12 小时前
Azure Dataverse 权限设计学习
学习·flask·azure
叫我:松哥17 小时前
基于Spark智能推荐算法的农业作物推荐系统,推荐算法使用Spark ML风格推荐引擎
大数据·python·机器学习·spark-ml·spark·flask·推荐算法
叫我:松哥17 小时前
基于 Flask 的音乐推荐与可视化分析系统,包含用户、创作者、管理员三种角色,集成 ECharts 进行数据可视化,采用混合推荐算法
开发语言·python·信息可视化·flask·echarts·pandas·推荐算法
2501_941225682 天前
面向微服务分布式事务与最终一致性的互联网系统高可用设计与多语言工程实践分享
eureka·flask
Looooking2 天前
Flask 之多线程并发模式
后端·python·flask
叫我:松哥2 天前
基于Flask的智能服装搭配推荐系统,采用协同过滤和内容过滤的混合推荐算法,支持虚拟试穿和个性化建议
人工智能·python·算法·信息可视化·flask·scikit-learn·推荐算法
曲幽2 天前
从本地到云端:深入理解WSGI,让你的Python Web应用稳健部署
python·nginx·flask·fastapi·web·gunicorn·uvicorn·diango·waitress
曲幽3 天前
从安装到上线:一份 Nginx 实战指南,让你的 Web 应用稳建安全
python·nginx·flask·fastapi·web·gunicorn·uvicorn
给勒布朗上上对抗呀3 天前
FlaskSession伪造-攻防世界-catcat-new
flask·ctf