Как создать книжный индекс с помощью Python?

У меня есть раздел, и в этом разделе у меня есть темы, например, главы книг. Но на странице этого раздела у меня есть только три последние главы, поэтому, когда я щелкаю, я могу перейти вперед на одну страницу, на которой я нахожусь. Это мой HTML-шаблон.

<ul>
          {% for chapter in book %}
            <li>
                <a href="#{{ chapter }}">{{ chapter }}</a>
            </li>
          {% endfor %}
</ul>

Но как я могу получить доступ к разделу в example/book?page=2#chapter_five?

Я пытался создать функцию для поиска главы в цикле for со всеми страницами, но получил, что объект не является итерируемым.

Я попробовал это в своих представлениях.

chapter = chapters.object_list
        chapters_pages = paginator.num_pages
        for page in chapters_pages:
            if page.contains(chapter):
                context["chapter_page"] = page

Так я смог это сделать, но ничего не получилось.

<ul>
          {% for chapter in book %}
            <li>
                <a href="?page=chapter_page#{{ chapter }}">{{ chapter }}</a>
            </li>
          {% endfor %}
</ul>

Урл неправильный, он должен быть таким:

?page={{ chapter_page }}&#{{ chapter }}
                        ^

Поскольку это две разные строки запроса, их следует различать с помощью символа &. Кроме того, chapter_page должна быть переменной, которая является целым числом. Наконец, вы выполняете итерацию через целое число (chapter.num_pages). Это должен быть список (paginator.page_range). Например:

for page in paginator.page_range:
        if page.contains(chapter):
            context["chapter_page"] = page.number

Честно говоря, вам не нужен этот код, исходя из моего понимания. Поскольку вы хотите передать номер страницы как страницу главы, то вы можете передать значение номера страницы:

context["chapter_page"] = chapters.number

Больше информации можно найти в документации.

Вернуться на верх