Как создать книжный индекс с помощью 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
Больше информации можно найти в документации.