【问题标题】:Pagination with Pony ORM使用 Pony ORM 进行分页
【发布时间】:2017-08-31 06:54:50
【问题描述】:

有没有使用 Pony ORM 进行分页的最佳实践?

我看到其他人有这些 has_nexthas_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 %}

所以我错过了什么吗?有更好的办法吗?

【问题讨论】:

    标签: python flask pagination jinja2 ponyorm


    【解决方案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
    

    【讨论】:

      【解决方案2】:

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

      @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 %}
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-04-02
        • 1970-01-01
        • 1970-01-01
        • 2017-06-10
        • 1970-01-01
        • 1970-01-01
        • 2013-04-13
        • 1970-01-01
        相关资源
        最近更新 更多