flask分页宏增加更多参数

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

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

flask分页宏增加更多参数_第1张图片

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

posts.html

{% extends "public/base.html" %}
{% import "public/macros.html" as macros %}

{% block content %}
    
{% include "public/categories.html" %}
{% if posts %}
{% include "public/_posts.html" %}
{% if category %} {{ macros.pagination_widget(pagination, '.posts', category.id) }} {% else %} {{ macros.pagination_widget(pagination, '.posts', 0) }} {% endif %}
{% endif %}
{% endblock %}

关键代码

flask分页宏增加更多参数_第2张图片

macros.html

{% macro pagination_widget(pagination, endpoint, category_id) %}
        
  • Previous
  • {% for p in pagination.iter_pages() %} {% if p %} {% if p == pagination.page %}
  • {{ p }}
  • {% else %}
  • {{ p }}
  • {% endif %} {% else %}
  • {% endif %} {% endfor %}
  • Next
{% endmacro %}

关键代码

flask分页宏增加更多参数_第3张图片

routes.py

@app.route('/posts', methods=['GET', 'POST'])
@app.route('/posts/', 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)

关键代码

 flask分页宏增加更多参数_第4张图片

你可能感兴趣的:(#,python后端开发,flask)