Skip to content

Динамическая Page

Если вам требуется динамически обновлять вид страницы после пользовательского ввода (например, страница каталога с пагинацией и базой данных), одним из простейших способов будет переход на ту же самую страницу с использованием сессионного хранилища.

Вот пример сниппета, где пользователь может переключаться между страницами, выдаваемыми базой данных:

async def update_page(self, user, value):
    page_index = await user.storage.get("page_index")
    page_index += value
    await user.storage.set("page_index", page_index)

    # Обновляем страницу, чтобы загрузить новые данные
    navigator.update_page(user, '/')


async def make_page_content(self, user):
    page_index = await user.storage.get("page_index")
    data = await handler.get_page(page_index)

    text = '\n'.join([f"{entry.id}) {entry.text}" for entry in data])

    buttons = []
    if page_index < self.max_page_index:
        buttons.append(
            ButtonData("Следующая", ButtonCallback(self.update_page, value=1))
        )
    if page_index > 0:
        buttons.append(
            ButtonData("Предыдущая", ButtonCallback(self.update_page, value=-1))
        )

    self.markup.add_row(buttons)
    await self.send(user, text, markup=True)