Я работаю над разбиением на страницы в фляге (фреймворк Python), используя флягу-пагинацию (только для ссылки)
Я могу выполнить разбиение на страницы только для запроса find
, как показано ниже:
from flask_paginate import Pagination
from flask_paginate import get_page_args
def starting_with_letter(letter):
page, per_page, offset = get_page_args()
collection_name=letter.lower()+'_collection'
words=db[collection_name]
data_db=words.find()
data=data_db.limit(per_page).skip(offset) '''Here I have achieved the limit and skip'''
pagination = Pagination(page=page, total=data.count(),per_page=per_page,offset=offset,record_name='words')
return render_template('startingwords.html',data=data,pagination=pagination)
Но я не могу сделать то же самое для агрегата здесь:
def test():
page, per_page, offset = get_page_args()
cursor_list=[] '''appending each cursor in iteration of for loop '''
collections=db.collection_names()
for collection in collections:
cursor_objects = db[collection].aggregate([
{
"$match": {
"$expr": {"$eq": [{"$strLenCP": "$word"}, 6]}
}
},
{"$skip": offset},
{"$limit": per_page}
])
for cursor in cursor_objects:
cursor_list.append(cursor)
pagination = Pagination(page=page, total=len(cursor_list),per_page=per_page,offset=offset,record_name='words')
return render_template('lettersearch.html',data=cursor_list,pagination=pagination)
Результаты отображаются как:
Здесь все результаты 39
показаны на одной странице.
При нажатии page 2
он показал:
Примечание. По умолчанию flask-paginate изначально устанавливает per_page
как 10
, а offset
как 0
.
после ссылки на многие ссылки, которые я пробовал:
размещение skip
и limit
выше match
, что в любом случае неправильно
Также узнал, что за limit
всегда следует skip
Я застрял с этим, любая помощь приветствуется