Как создать ярлык для перехода к разделу на другой странице?
У меня есть книга как объект, и я делаю постраничную нумерацию ее глав, но ее главы являются ОБЪЕКТАМИ, с chapter.number и chapter.story. У меня есть резюме книги с номерами всех глав, но, таким образом, резюме должно быть ярлыком на страницу, например, book/chapter?page=5&#chapter_five.
class ChapterView(DetailView):
template_name = "tailwind/book_detail.html"
model = Books
slug_url_kwarg = "book_name"
slug_field = "name"
def get_object(self, queryset=None):
try:
return Books.objects.get(name=self.kwargs["book_name"])
except Books.DoesNotExist as e:
raise Http404
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
tuple_book = self.get_object().ordered_chapter().items()
book = [{"chapter_number": chapter_number, "chapter_resume": chapter_resume} for chapter_number, chapter_resume in tuple_book]
page = self.request.GET.get("page", 1)
paginator = Paginator(book, 2)
try:
paginated_book = paginator.page(page)
except PageNotAnInteger:
paginated_book = paginator.page(1)
except EmptyPage:
paginated_book = paginator.page(paginator.num_pages)
# just get the current page
# the book is not paginated because I need to return all indexes in the template
for chapter in book.object_list:
if self.request.GET.get("chapter_number", None) == chapter.chapter_number:
context["chapter_page"] = chapter["chapter_number"].get_page_number()
context["book"] = book
context["paginated_book"] = paginated_book
return context
Теперь, это мой шаблон, это та часть, где я возвращаю постраничные главы.
<div>
<div>
{% for chapter in paginated_changelogs %}
<div>
<div>
<h2>{{ chapter.chapter_number }} </h2>
<div>
{{ chapter.chapter_resume }}
</div>
</div>
</div>
{% endfor %}
</div>
А это мой книжный индекс, где я должен перейти к определенному разделу, даже если он находится на другой странице:
<ul>
{% for chapter_number in book %}
<li>
<a
href="?page={{ chapter_page }}&#{{ chapter_number }}">
{{ chapter_number }}
</a>
</li>
{% endfor %}
</ul>
Однако это не работает, потому что функция не возвращает страницу. Она ничего не возвращает, я получаю book/chapter?page=&#chapter_five.
Я пытался реализовать этот ответ Как создать индекс книги с помощью Python?, но что-то работает не так.