From 9993fd5de6f6567957d3b99d685e952b74ab1dbc Mon Sep 17 00:00:00 2001 From: Viner Abubakirov Date: Fri, 12 Dec 2025 16:57:12 +0500 Subject: [PATCH] =?UTF-8?q?=D0=9D=D0=B0=D1=87=D0=B0=D0=BB=20=D0=B4=D0=BE?= =?UTF-8?q?=D0=B2=D0=BE=D0=B4=D0=B8=D1=82=D1=8C=20=D1=88=D0=B0=D0=B1=D0=BB?= =?UTF-8?q?=D0=BE=D0=BD=D1=8B=20=D0=BF=D0=BE=D0=B4=20=D0=B5=D0=B4=D0=B8?= =?UTF-8?q?=D0=BD=D1=8B=D0=B9=20=D1=81=D1=82=D0=B8=D0=BB=D1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- music_storage/core/urls.py | 10 +++ music_storage/core/views.py | 4 +- music_storage/music/urls.py | 8 ++- music_storage/music_storage/settings.py | 3 + music_storage/music_storage/urls.py | 3 +- music_storage/static/css/main.css | 72 +++++++++++++++++++ music_storage/static/js/player.js | 0 music_storage/templates/base.html | 26 +++++++ music_storage/templates/index.html | 1 + music_storage/templates/music/album_list.html | 0 .../templates/music/artist_list.html | 0 11 files changed, 124 insertions(+), 3 deletions(-) create mode 100644 music_storage/core/urls.py create mode 100644 music_storage/static/css/main.css create mode 100644 music_storage/static/js/player.js create mode 100644 music_storage/templates/index.html create mode 100644 music_storage/templates/music/album_list.html create mode 100644 music_storage/templates/music/artist_list.html diff --git a/music_storage/core/urls.py b/music_storage/core/urls.py new file mode 100644 index 0000000..0f530a8 --- /dev/null +++ b/music_storage/core/urls.py @@ -0,0 +1,10 @@ +from django.urls import path + +from core.views import index + + +app_name = "index" + +urlpatterns = [ + path("", index, name="main_index"), +] diff --git a/music_storage/core/views.py b/music_storage/core/views.py index 91ea44a..4c627f1 100644 --- a/music_storage/core/views.py +++ b/music_storage/core/views.py @@ -1,3 +1,5 @@ from django.shortcuts import render -# Create your views here. + +def index(request, *args, **kwargs): + return render(request, "index.html") diff --git a/music_storage/music/urls.py b/music_storage/music/urls.py index e4fcd8f..03db8bc 100644 --- a/music_storage/music/urls.py +++ b/music_storage/music/urls.py @@ -1,8 +1,14 @@ from django.urls import path from music.views import TrackListView +from music.views import AlbumListView +from music.views import ArtistListView +app_name = "music" + urlpatterns = [ - path("", TrackListView.as_view(), name="track_list"), + path("tracks/", TrackListView.as_view(), name="track_list"), + path("albums/", AlbumListView.as_view(), name="album_list"), + path("artists/", ArtistListView.as_view(), name="artist_list"), ] diff --git a/music_storage/music_storage/settings.py b/music_storage/music_storage/settings.py index 76b8d3f..ccfdf38 100644 --- a/music_storage/music_storage/settings.py +++ b/music_storage/music_storage/settings.py @@ -122,6 +122,9 @@ USE_TZ = True # https://docs.djangoproject.com/en/6.0/howto/static-files/ STATIC_URL = 'static/' +STATICFILES_DIRS = [ + BASE_DIR / STATIC_URL +] STORAGES = { # default storage for user uploads diff --git a/music_storage/music_storage/urls.py b/music_storage/music_storage/urls.py index 3524e89..0de84bf 100644 --- a/music_storage/music_storage/urls.py +++ b/music_storage/music_storage/urls.py @@ -19,5 +19,6 @@ from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), - path('', include("music.urls")), + path('music/', include("music.urls")), + path('', include("core.urls")), ] diff --git a/music_storage/static/css/main.css b/music_storage/static/css/main.css new file mode 100644 index 0000000..313d12c --- /dev/null +++ b/music_storage/static/css/main.css @@ -0,0 +1,72 @@ +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +body { + font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; + background-color: #f5f7fa; + color: #333; + line-height: 1.6; + padding-bottom: 100px; +} + +.container { + max-width: 1200px; + margin: 0 auto; + padding: 20px; +} + +header { + text-align: center; + padding: 30px 0; + background: linear-gradient(135deg, #bbc0d4 0%, #bab5c0 100%); + color: white; + border-radius: 10px; + margin-bottom: 30px; + box-shadow: 0 4px 15px rgba(0,0,0,0.1); +} + +h1 { + font-weight: 600; + font-size: 2.5rem; + margin-bottom: 10px; +} + +.logo-link { + text-decoration: none; + color: inherit; + cursor: pointer; +} + +.logo-link:hover { + opacity: 0.55; +} + +.main-nav { + display: flex; + justify-content: center; + gap: 20px; + margin-top: 15px; +} + +.nav-link { + text-decoration: none; + color: white; + font-weight: 500; + padding: 10px 20px; + background: rgba(255, 255, 255, 0.15); + border-radius: 8px; + transition: background 0.3s ease, transform 0.2s ease; + box-shadow: 0 2px 6px rgba(0,0,0,0.15); +} + +.nav-link:hover { + background: rgba(255, 255, 255, 0.30); + transform: translateY(-2px); +} + +.nav-link:active { + transform: translateY(0); +} \ No newline at end of file diff --git a/music_storage/static/js/player.js b/music_storage/static/js/player.js new file mode 100644 index 0000000..e69de29 diff --git a/music_storage/templates/base.html b/music_storage/templates/base.html index e69de29..5755799 100644 --- a/music_storage/templates/base.html +++ b/music_storage/templates/base.html @@ -0,0 +1,26 @@ +{% load static %} + + + + + + + {% block head_extra %}{% endblock %} + {% block title %}Музыкальный сервис{% endblock %} + + +
+
+

Музыкальный сервис

+ + {% block header_extra %}{% endblock %} +
+ {% block content %}{% endblock %} +
+ {% block content_extra %}{% endblock %} + + \ No newline at end of file diff --git a/music_storage/templates/index.html b/music_storage/templates/index.html new file mode 100644 index 0000000..94d9808 --- /dev/null +++ b/music_storage/templates/index.html @@ -0,0 +1 @@ +{% extends "base.html" %} diff --git a/music_storage/templates/music/album_list.html b/music_storage/templates/music/album_list.html new file mode 100644 index 0000000..e69de29 diff --git a/music_storage/templates/music/artist_list.html b/music_storage/templates/music/artist_list.html new file mode 100644 index 0000000..e69de29