Добавлен каталог, с рабочим стилем
This commit is contained in:
@@ -1,7 +1,9 @@
|
||||
from django.urls import path
|
||||
from .views import show_manga, show_manga_page
|
||||
from .views import show_manga, show_manga_page, manga_catalog
|
||||
|
||||
|
||||
urlpatterns = [
|
||||
path('catalog/', manga_catalog, name='manga_catalog'),
|
||||
path('manga/<int:manga_id>/', show_manga, name='show_manga'),
|
||||
path('manga/<int:manga_id>/page/<int:page_number>/', show_manga_page, name='show_manga_page'),
|
||||
]
|
||||
@@ -1,5 +1,17 @@
|
||||
from django.shortcuts import render
|
||||
from .models import manga_collection
|
||||
from django.core.paginator import Paginator
|
||||
|
||||
|
||||
def manga_catalog(request):
|
||||
all_manga = list(manga_collection.find({}))
|
||||
paginator = Paginator(all_manga, 20)
|
||||
page_number = request.GET.get('page')
|
||||
page_obj = paginator.get_page(page_number)
|
||||
return render(request, 'manga_catalog.html', {
|
||||
'page_obj': page_obj,
|
||||
'manga_list': page_obj.object_list
|
||||
})
|
||||
|
||||
def show_manga(request, manga_id):
|
||||
manga = manga_collection.find_one({"id": int(manga_id)})
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Title</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -5,6 +5,8 @@
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>{% block title %}{{ manga.original_title }}{% endblock %}</title>
|
||||
<link rel="stylesheet" href="{% static 'css/manga_catalog.css' %}">
|
||||
|
||||
<link rel="stylesheet" href="{% static 'css/manga_view.css' %}">
|
||||
<!-- Меняем размер пикч -->
|
||||
<style>
|
||||
|
||||
60
templates/manga_catalog.html
Normal file
60
templates/manga_catalog.html
Normal file
@@ -0,0 +1,60 @@
|
||||
{% extends 'base_manga.html' %}
|
||||
{% load static %}
|
||||
|
||||
{% block title %}Каталог манги{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="catalog-container">
|
||||
<h1>Каталог манги</h1>
|
||||
|
||||
<div class="manga-list">
|
||||
{% for manga in manga_list %}
|
||||
<div class="manga-item">
|
||||
<!-- Изображение слева -->
|
||||
<div class="manga-cover">
|
||||
<img src="{{ manga.img }}"
|
||||
alt="{{ manga.original_title }}"
|
||||
onerror="this.onerror=null; this.src='{% static 'images/default_cover.jpg' %}'">
|
||||
</div>
|
||||
|
||||
<!-- Информация справа -->
|
||||
<div class="manga-info">
|
||||
<h2>{{ manga.original_title }}</h2>
|
||||
{% if manga.russian_title %}
|
||||
<p class="alt-title">{{ manga.russian_title }}</p>
|
||||
{% endif %}
|
||||
|
||||
<div class="meta-data">
|
||||
<span class="pages">{{ manga.len_manga }} страниц</span>
|
||||
{% if manga.tags %}
|
||||
<div class="tags">
|
||||
{% for tag in manga.tags %}
|
||||
<span class="tag">{{ tag }}</span>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
<a href="{% url 'show_manga' manga.id %}" class="read-button">Читать</a>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
<div class="pagination">
|
||||
{% if page_obj.has_previous %}
|
||||
<a href="?page=1">« первая</a>
|
||||
<a href="?page={{ page_obj.previous_page_number }}">предыдущая</a>
|
||||
{% endif %}
|
||||
|
||||
<span class="current">
|
||||
Страница {{ page_obj.number }} из {{ page_obj.paginator.num_pages }}
|
||||
</span>
|
||||
|
||||
{% if page_obj.has_next %}
|
||||
<a href="?page={{ page_obj.next_page_number }}">следующая</a>
|
||||
<a href="?page={{ page_obj.paginator.num_pages }}">последняя »</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
107
templates/static/css/manga_catalog.css
Normal file
107
templates/static/css/manga_catalog.css
Normal file
@@ -0,0 +1,107 @@
|
||||
/* Базовые стили */
|
||||
body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
background: #f8f9fa;
|
||||
font-family: Arial, sans-serif;
|
||||
}
|
||||
|
||||
.catalog-container {
|
||||
max-width: 1200px;
|
||||
margin: 0 auto;
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
/* Карточка манги */
|
||||
.manga-item {
|
||||
display: flex;
|
||||
gap: 20px;
|
||||
background: white;
|
||||
border-radius: 8px;
|
||||
overflow: hidden;
|
||||
margin-bottom: 20px;
|
||||
box-shadow: 0 2px 5px rgba(0,0,0,0.1);
|
||||
}
|
||||
|
||||
/* Изображение слева (фиксированная ширина) */
|
||||
.manga-cover {
|
||||
width: 200px;
|
||||
height: 280px;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.manga-cover img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover;
|
||||
display: block;
|
||||
}
|
||||
|
||||
/* Информация справа */
|
||||
.manga-info {
|
||||
padding: 25px;
|
||||
flex-grow: 1;
|
||||
}
|
||||
|
||||
.manga-info h2 {
|
||||
margin: 0 0 8px 0;
|
||||
color: #333;
|
||||
font-size: 24px;
|
||||
}
|
||||
|
||||
.alt-title {
|
||||
color: #666;
|
||||
margin: 0 0 15px 0;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.meta-data {
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.pages {
|
||||
display: block;
|
||||
color: #888;
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
.tags {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
.tag {
|
||||
background: #f0f0f0;
|
||||
padding: 4px 10px;
|
||||
border-radius: 4px;
|
||||
font-size: 14px;
|
||||
color: #555;
|
||||
}
|
||||
|
||||
.read-button {
|
||||
display: inline-block;
|
||||
padding: 10px 25px;
|
||||
background: #4a89dc;
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
border-radius: 5px;
|
||||
margin-top: 15px;
|
||||
transition: background 0.3s;
|
||||
}
|
||||
|
||||
.read-button:hover {
|
||||
background: #3b7dd8;
|
||||
}
|
||||
|
||||
/* Адаптивность */
|
||||
@media (max-width: 768px) {
|
||||
.manga-item {
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.manga-cover {
|
||||
width: 100%;
|
||||
height: 300px;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user