Python 用小马进行分页

Python 用小马进行分页,python,flask,pagination,jinja2,ponyorm,Python,Flask,Pagination,Jinja2,Ponyorm,是否有使用Pony ORM分页的最佳实践 我看到其他人有这些has_next和has_previous助手方法,但在小马中,我只能靠自己 到目前为止,我已经有了几个Jinja助手: # Jinja helpers for pagination def next_page(current, max_page): if current >= max_page: return False else: return current + 1 def

是否有使用Pony ORM分页的最佳实践

我看到其他人有这些
has_next
has_previous
助手方法,但在小马中,我只能靠自己

到目前为止,我已经有了几个Jinja助手:

# Jinja helpers for pagination
def next_page(current, max_page):
    if current >= max_page:
        return False
    else:
        return current + 1


def prev_page(current, max_page):
    if current < 2:
        return False
    else:
        return current - 1 

我是不是错过了什么?有更好的方法吗?

您可以查询分页

q = models.select(d for d in models.Thingy)
page = 1
count = q.count()
results_of_first_page = q.page(page, 20)
pages = int(count/20)
if pages > 20:
    pages = 20

快速解决方案,可能不是最好的

@app.route('/persons-list/<int:page>') 
def persons_list(page):
    LIMIT = 10
    items = select(p for p in models.Person)
    return render_template('persons_list.html',
                            maxpage=items.count()//LIMIT,
                            page=page,
                            items=items.page(page, LIMIT))
@app.route(“/persons list/”)
def人员名单(第页):
限值=10
项目=选择(模型中p代表p.Person)
返回呈现模板('persons\u list.html',
maxpage=items.count()//限制,
第页,
项目=项目。第页(第页,限制))
在模板中:

{% if maxpage > 1 %}
    {% if page - 1 >= 1 %}
        <a href="{{ url_for('persons_list', page=page-1) }}"><</a>
    {% endif %}

    Page {{ page }} of {{ maxpage }}

    {% if page + 1 <= maxpage %}
        <a href="{{ url_for('persons_list', page=page+1) }}">></a>
    {% endif %}
{% endif %}
{%if maxpage>1%}
{%如果第1页>=1%}
{%endif%}
{%endif%}
{% if maxpage > 1 %}
    {% if page - 1 >= 1 %}
        <a href="{{ url_for('persons_list', page=page-1) }}"><</a>
    {% endif %}

    Page {{ page }} of {{ maxpage }}

    {% if page + 1 <= maxpage %}
        <a href="{{ url_for('persons_list', page=page+1) }}">></a>
    {% endif %}
{% endif %}