有没有使用Pony ORM进行分页的最佳实践?
我看到其他人有这些has_next和has_previous帮助器方法,但在Pony中我只能靠自己了。
到目前为止,这就是我所拥有的,几个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 max_page的计算方法如下:math.ceil(MyTable.select().count()/PAGE_SIZE)
但变得有点单调乏味,你必须不断地发送当前页面和最大页面。
{% if maxpage > 1 %}
{% if prev_page(page, maxpage) %}
<a href="{{ url_for('index', pagenum=prev_page(page, maxpage)) }}"><</a>
{% endif %}
{% if next_page(page, maxpage) %}
<a href="{{ url_for('index', pagenum=next_page(page, maxpage)) }}">></a>
{% endif %}
{% endif %}我是不是漏掉了什么?还有更好的办法吗?
发布于 2017-05-22 04:19:47
您可以查询分页
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发布于 2019-01-19 05:07:01
快速解决方案,可能不是最好的
@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))在模板中:
{% 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 %}https://stackoverflow.com/questions/43234918
复制相似问题