from django.shortcuts import render from django.core.paginator import Paginator from .models import manga_collection def manga_catalog(request): # Получаем список всех уникальных тегов all_tags = manga_collection.distinct("tags") # Получаем выбранные теги из GET-параметров selected_tags = request.GET.getlist('tags') # Формируем запрос для фильтрации query = {} if selected_tags: query['tags'] = {'$all': selected_tags} # Получаем отфильтрованные записи filtered_manga = list(manga_collection.find(query)) # Пагинация paginator = Paginator(filtered_manga, 20) page_number = request.GET.get('page') page_obj = paginator.get_page(page_number) total_manga_count = manga_collection.count_documents({}) return render(request, 'manga_catalog.html', { 'page_obj': page_obj, 'manga_list': page_obj.object_list, 'total_manga_count': total_manga_count, 'all_tags': sorted(all_tags), 'selected_tags': selected_tags }) def show_manga(request, manga_id): manga = manga_collection.find_one({"id": int(manga_id)}) if not manga: return render(request, "not_found.html") return render(request, "manga_view.html", {"manga": manga}) def show_manga_page(request, manga_id, page_number): manga = manga_collection.find_one({"id": int(manga_id)}) if not manga or page_number < 1 or page_number > manga['len_manga']: return render(request, "not_found.html") img_url = manga['imgs_manga'][page_number - 1] return render(request, "manga_page.html", { "manga": manga, "img_url": img_url, "page_number": page_number })