From bd89672f89bce67a24a17335ac3367afd354a210 Mon Sep 17 00:00:00 2001 From: Ivan Kaziev Date: Sun, 14 Apr 2024 12:21:59 +0300 Subject: [PATCH] Create templates and views --- CineSync/CineSync/settings.py | 2 +- CineSync/CineSync/urls.py | 32 +++++++++---------- CineSync/films/models.py | 19 ++++++++++- CineSync/films/urls.py | 9 ++++++ CineSync/films/views.py | 28 ++++++++++++++-- CineSync/templates/base.html | 0 CineSync/templates/films/film_details.html | 0 CineSync/templates/films/films_list.html | 0 .../templates/tickets/ticket_details.html | 0 CineSync/templates/users/auth.html | 0 CineSync/templates/users/profile.html | 0 11 files changed, 69 insertions(+), 21 deletions(-) create mode 100644 CineSync/films/urls.py create mode 100644 CineSync/templates/base.html create mode 100644 CineSync/templates/films/film_details.html create mode 100644 CineSync/templates/films/films_list.html create mode 100644 CineSync/templates/tickets/ticket_details.html create mode 100644 CineSync/templates/users/auth.html create mode 100644 CineSync/templates/users/profile.html diff --git a/CineSync/CineSync/settings.py b/CineSync/CineSync/settings.py index de8df23..4a9337e 100644 --- a/CineSync/CineSync/settings.py +++ b/CineSync/CineSync/settings.py @@ -7,7 +7,7 @@ BASE_DIR = Path(__file__).resolve().parent.parent SECRET_KEY = os.environ.get("DJANGO_SECRET_KEY", default="google") -DEBUG = os.environ.get("DJANGO_DEBUG", default="false") +DEBUG = os.getenv("DJANGO_DEBUG", default="false") DEBUG = DEBUG.lower().strip() in ("true", "yes", "1", "y", "t") AUTH_USER_MODEL = "auth.User" diff --git a/CineSync/CineSync/urls.py b/CineSync/CineSync/urls.py index 1e3e6ec..e7a80c7 100644 --- a/CineSync/CineSync/urls.py +++ b/CineSync/CineSync/urls.py @@ -1,22 +1,20 @@ -""" -URL configuration for CineSync project. - -The `urlpatterns` list routes URLs to views. For more information please see: - https://docs.djangoproject.com/en/4.2/topics/http/urls/ -Examples: -Function views - 1. Add an import: from my_app import views - 2. Add a URL to urlpatterns: path('', views.home, name='home') -Class-based views - 1. Add an import: from other_app.views import Home - 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') -Including another URLconf - 1. Import the include() function: from django.urls import include, path - 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) -""" +from django.conf import settings +from django.conf.urls.static import static from django.contrib import admin -from django.urls import path +from django.urls import include, path + urlpatterns = [ path('admin/', admin.site.urls), + path('films/', include('films.urls'), name='films'), ] + +if settings.DEBUG: + import debug_toolbar + + urlpatterns += (path('__debug__/', include(debug_toolbar.urls)),) + urlpatterns += static( + settings.MEDIA_URL, + document_root=settings.MEDIA_ROOT, + ) + diff --git a/CineSync/films/models.py b/CineSync/films/models.py index ffbe682..8236ab7 100644 --- a/CineSync/films/models.py +++ b/CineSync/films/models.py @@ -1,7 +1,22 @@ -from django.db.models import Model, CharField, IntegerField, DateField, ManyToManyField +from django.db.models import ( + Model, + CharField, + IntegerField, + DateField, + ManyToManyField, + Manager, +) +from django.utils import timezone from django.core.validators import MinValueValidator +class FilmManager(Manager): + def released(self): + return super().get_queryset().filter( + release_date__lt=timezone.now(), + ) + + class Genre(Model): name = CharField( 'Название', @@ -17,6 +32,8 @@ class Genre(Model): class Film(Model): + objects = FilmManager() + name = CharField( 'Название', help_text='Название фильма', diff --git a/CineSync/films/urls.py b/CineSync/films/urls.py new file mode 100644 index 0000000..5af780e --- /dev/null +++ b/CineSync/films/urls.py @@ -0,0 +1,9 @@ +from django.urls import path + +from films import views + +app_name = 'films' +urlpatterns = [ + path('', views.films_list, name='main'), + path('/', views.film_details, name='film_details') +] diff --git a/CineSync/films/views.py b/CineSync/films/views.py index 91ea44a..ac6cb8f 100644 --- a/CineSync/films/views.py +++ b/CineSync/films/views.py @@ -1,3 +1,27 @@ -from django.shortcuts import render +from django.http import HttpResponse +from django.shortcuts import render, get_object_or_404 + +from films.models import Film + + +def films_list(request: HttpResponse) -> HttpResponse: + films = Film.objects.released() + context = {'films': films} + return render( + request, + 'films/films_list.html', + context, + ) + + +def film_details(request: HttpResponse, film_id: int) -> HttpResponse: + item = get_object_or_404( + Film.objects.released(), + id=film_id, + ) + return render( + request, + "catalog/film_details.html", + {"item": item}, + ) -# Create your views here. diff --git a/CineSync/templates/base.html b/CineSync/templates/base.html new file mode 100644 index 0000000..e69de29 diff --git a/CineSync/templates/films/film_details.html b/CineSync/templates/films/film_details.html new file mode 100644 index 0000000..e69de29 diff --git a/CineSync/templates/films/films_list.html b/CineSync/templates/films/films_list.html new file mode 100644 index 0000000..e69de29 diff --git a/CineSync/templates/tickets/ticket_details.html b/CineSync/templates/tickets/ticket_details.html new file mode 100644 index 0000000..e69de29 diff --git a/CineSync/templates/users/auth.html b/CineSync/templates/users/auth.html new file mode 100644 index 0000000..e69de29 diff --git a/CineSync/templates/users/profile.html b/CineSync/templates/users/profile.html new file mode 100644 index 0000000..e69de29