Трабл с flask нумерацией страниц - PullRequest
1 голос
/ 27 января 2020

У меня есть блок циклического дзиндзя на странице, и я хочу разбить его на страницы. Я следую этому учебному пособию, но я получаю «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>

1 Ответ

1 голос
/ 28 января 2020

В 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')
...