Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Физическая модель базы данныхСодержание книги Поиск на нашем сайте База данных разработана на SQLite 3
class Category(models.Model): """Категории""" name = models.CharField("Категория", max_length=150) description = models.TextField("Описание") url = models.SlugField(max_length=160, unique=True) def __str__(self): return self.name class Meta: verbose_name = "Категория" verbose_name_plural = "Категории"
class Actor(models.Model): """Актеры""" name = models.CharField("Имя", max_length=100) age = models.PositiveSmallIntegerField("Возраст", default=0) description = models.TextField("Описание") image = models.ImageField("Изображение", upload_to="actors/") def __str__(self): return self.name def get_absolute_url(self): return reverse('actor_detail', kwargs={"slug": self.name}) class Meta: verbose_name = "Актер" verbose_name_plural = "Актеры"
class Director(models.Model): """Режиссеры""" name = models.CharField("Имя", max_length=100) age = models.PositiveSmallIntegerField("Возраст", default=0) description = models.TextField("Описание") image = models.ImageField("Изображение", upload_to="directors/") def __str__(self): return self.name def get_absolute_url(self): return reverse('director_detail', kwargs={"slug": self.name}) class Meta: verbose_name = "Режиссер" verbose_name_plural = "Режиссеры"
class Genre(models.Model): """Жанры""" name = models.CharField("Имя", max_length=100) description = models.TextField("Описание") url = models.SlugField(max_length=160, unique=True) def __str__(self): return self.name class Meta: verbose_name = "Жанр" verbose_name_plural = "Жанры"
class Movie(models.Model): """Фильм""" title = models.CharField("Название", max_length=100) tagline = models.CharField("Слоган", max_length=100, default='') description = models.TextField("Описание") poster = models.ImageField("Постер", upload_to="movies/") year = models.PositiveSmallIntegerField("Дата выхода", default=2021) country = models.CharField("Страна", max_length=30) directors = models.ManyToManyField(Director, verbose_name="режиссер", related_name="film_director") actors = models.ManyToManyField(Actor, verbose_name="актеры", related_name="film_actor") genres = models.ManyToManyField(Genre, verbose_name="жанры") world_premiere = models.DateField("Примьера в мире", default=date.today) budget = models.PositiveIntegerField("Бюджет", default=0, help_text="указывать сумму в долларах") fees_in_usa = models.PositiveIntegerField("Сборы в США", default=0, help_text="указывать сумму в долларах") fess_in_world = models.PositiveIntegerField("Сборы в мире", default=0, help_text="указывать сумму в долларах") category = models.ForeignKey(Category, verbose_name="Категория", on_delete=models.SET_NULL, null=True) url = models.SlugField(max_length=130, unique=True) draft = models.BooleanField("Черновик", default=False) def __str__(self): return self.title def get_absolute_url(self): return reverse("movie_detail", kwargs={"slug": self.url}) def get_review(self): return self.reviews_set.filter(parent__isnull=True) class Meta: verbose_name = "Фильм" verbose_name_plural = "Фильмы"
class MovieShots(models.Model): """Кадры из фильма""" title = models.CharField("Заголовок", max_length=100) description = models.TextField("Описание") image = models.ImageField("Изображение", upload_to="movie_shots/") movie = models.ForeignKey(Movie, verbose_name="Фильм", on_delete=models.CASCADE) def __str__(self): return self.title class Meta: verbose_name = "Кадр из фильма" verbose_name_plural = "Кадры из фильма"
class RatingStar(models.Model): """Звезда рейтинга""" value = models.SmallIntegerField("Значение", default=1) def __str__(self): return f'{self.value}' class Meta: verbose_name = "Звезда рейтинга" verbose_name_plural = "Звезды рейтинга" ordering = ["-value"]
class Rating(models.Model): """Рейтинг""" ip = models.CharField("IP адрес", max_length=15) star = models.ForeignKey(RatingStar, on_delete=models.CASCADE, verbose_name="звезда") movie = models.ForeignKey(Movie, on_delete=models.CASCADE, verbose_name="фильм") def __str__(self): return f"{self.star} - {self.movie}" class Meta: verbose_name = "Рейтинг" verbose_name_plural = "Рейтинги"
class Reviews(models.Model): """Отзывы""" email = models.EmailField() name = models.CharField("Имя", max_length=100) text = models.TextField("Сообщение", max_length=5000) parent = models.ForeignKey('self', verbose_name="Родитель", on_delete=models.SET_NULL, blank=True, null=True) movie = models.ForeignKey(Movie, verbose_name="фильм", on_delete=models.CASCADE) def __str__(self): return f"{self.name} - {self.movie}" class Meta: verbose_name = "Отзыв" verbose_name_plural = "Отзывы" Описание программы
Физическая структура
Данный курсовой проект имеет следующую физическую структуру, что изображено на рисунке 4.1.
Рисунок 4.1 – Физическая структура проекта
Папка movies включает в себя следующие формы: 1) admin – отвечает за панель администратора. 2) apps – отвечает за основные настройки. 3) forms – отображение и добавление рейтинга и отзыва к фильму 4) models – создание базы данных 5) urls – создание url путей 6) views – содержит представление жанров, вывод полного описания фильма, вывод всех фильмов, вывод отзыва и рейтинга, вывод актеров и режиссеров, фильтрацию фильмов, поиск.
Логическая структура
Классы Category, Actor, Director, Genre, Movie, MovieShots, RatingStar, Rating, Reviews содержат метод __str__(self), для вывода данных. Класс Actor, Director, Movie содержат метод get_absolut_url(), для корректного отображения ссылки. Класс Movie содержит метод get_review(), для добавления и вывода отзывов Особенности интерфейса При открытии приложения пользователю отображается главная форма. На данной форме расположены последние добавленные фильмы, фильтрация, поиск, изображённые на рисунке 4.2.
Рисунок 4.2 – Главная форма При выборе фильтров, пользователю выводится результат фильтрации, изображено на рисунке 4.3.
Рисунок 4.3 – Результат фильтрации
При нажатии на кнопку «Поиск», если поле поиска заполнено – пользователю выводятся фильмы с похожим названием, изображено на рисунке 4.4.
Рисунок 4.4 – Фильмы с похожим названием
При нажатии на пункт «Отправить», пользователь отправляет свой отзыв к фильму, изображено на рисунке 4.5.
Рисунок 4.5 – Отправка отзыва
|
||
|
Последнее изменение этой страницы: 2021-05-12; просмотров: 112; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.102 (0.006 с.) |