【问题标题】:Trouble with flask pagination烧瓶分页的问题
【发布时间】:2020-01-28 05:53:37
【问题描述】:

我在页面上有一个循环 jinja 块,我想对它进行分页。我正在关注this 教程,但我得到“TypeError:count() 只需要一个参数(给定 0)”。我认为问题在于传递 home_data 信息,但我不知道该怎么做。这是我的 .py:

from flask import Blueprint
from flask_paginate import Pagination, get_page_parameter

mod = Blueprint('home_data', __name__)

@app.route('/')
def home():

    search = False
    q = request.args.get('q')
    if q:
        search = True

    page = request.args.get(get_page_parameter(), type=int, default=1)
    home_data = Article.query.all()
    pagination = Pagination(page=page, total=home_data.count(), search=search, record_name='home_data')


    return render_template('home.html', home_data=Article.query.all(), pagination=pagination,)

HTML:

<!DOCTYPE html>
<html>
<head>
<title>Home</title>
</head>

<body>

{{ pagination.info }}
{{ pagination.links }}

{% for dict_item in home_data|reverse %}

<!--<a href="results/{{ dict_item['id'] }}">-->

    <div class="photo">
        <img src="{{ dict_item['image_url'] }}" width="100%">
    </div>
    <div class="hometitlesstyle">{{ dict_item['title'] }}</div>
    <div class="voteorresult"><a href="votefor/{{ dict_item['id'] }}">Vote</a></div>
    <div class="resultbox"><a href="results/{{ dict_item['id'] }}">Results</a></div>

<hr class="new1">
    {% endfor %}

{{ pagination.links }}

</body>
</html>

【问题讨论】:

  • 您正在使用home_data.count(),不带任何参数。显然你需要传递一个论点。你认为home_data.count() 是什么意思?
  • 所以在教程示例中,它只有: users = User.find(...) 但我不知道他们从哪里得到“用户”,或者对我来说等价物是什么。我猜想 home_data = Article.find(...),但这也没有用。我是 python 新手,所以虽然我知道这对于有经验的程序员来说可能很明显,但我真的可以使用提示。

标签: python flask pagination


【解决方案1】:

home_data = Article.query.all() 中,all() 将查询转换为 python 列表。使用home_data = Article.query 将其保留为查询。这样count() 会在查询中起作用,而不是在列表中。

交替使用

home_data = Article.query.all()
pagination = Pagination(page=page, total=len(home_data), search=search, record_name='home_data')

【讨论】:

  • 谢谢!它现在正在运行。虽然现在它只是运行教程版本的所有内容,但它并没有对我的数据进行分页。嗯,我想我根本不明白这一点:/ 如果您有任何建议,请多多关注,但非常感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-18
  • 2021-10-15
  • 1970-01-01
  • 2013-09-06
  • 2020-02-19
  • 1970-01-01
相关资源
最近更新 更多