Files
hentai_manga_site/Hentai_manga_model/views.py
2025-03-31 09:21:38 +03:00

53 lines
1.8 KiB
Python

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
})