Скриншот архива с проектом
Структура проекта
Задание
Разработать сайт рецептов на фреймворке Django и языке Python / Приложение должно обладать базовым функционалом, приятным интерфейсом (роекомендуем использовать Bootstrap). База данных - можно использовать любую удобную, в том числе SQLite. Также должна присутствовать регистрация и авторизация пользователей.
Функционал программы
- Добавление блюд
- Добавление рецептов
- Добавление ингредиентов
- Редактирование блюд, рецептов и ингредиентов
- Удаление блюд, рецептов и ингредиентов
- Регистрация и авторизация пользователей
Фрагмент программного кода
from django.db import models from django.contrib.auth.models import User # Create your models here. class Category(models.Model): objects = models.Manager() name = models.CharField(max_length=200, help_text=" Введите категорию блюда", verbose_name="Категория блюда") class Meta: verbose_name = "Категория" verbose_name_plural = "Категории" def __str__(self): return self.name class Ingredient(models.Model): objects = models.Manager() name = models.CharField(max_length=100, verbose_name="Название ингредиента") quantity = models.PositiveIntegerField(verbose_name="Количество (гр./ шт.)") class Meta: verbose_name = "Ингредиент" verbose_name_plural = "Ингредиенты" def __str__(self): return f"{self.quantity} г {self.name}" class Recipe(models.Model): objects = models.Manager() title = models.CharField(max_length=200, verbose_name="Название рецепта") description = models.TextField(verbose_name="Описание рецепта") ingredients = models.ManyToManyField(Ingredient, related_name='recipes', verbose_name="Ингредиенты") cooking_steps = models.TextField(verbose_name="Инструкции по приготовлению") cooking_time = models.PositiveIntegerField(help_text="Время приготовления в минутах", verbose_name="Время приготовления") photo = models.ImageField(upload_to='images', blank=True, null=True, verbose_name="Изображение блюда") author = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name="Автор рецепта") def display_ingredients(self): return ", ".join([ingredient.name for ingredient in self.ingredients.all()]) display_ingredients.short_description = 'Ингредиенты' def __str__(self): return self.title class Meta: verbose_name = "Рецепт" verbose_name_plural = "Рецепты" class Food(models.Model): objects = models.Manager() name = models.CharField(max_length=100, verbose_name="Название блюда") recipe = models.ForeignKey(Recipe, on_delete=models.CASCADE, related_name='foods', verbose_name="Рецепт") category = models.ForeignKey(Category, on_delete=models.CASCADE, related_name='foods', verbose_name="Категория") image = models.ImageField(upload_to='images', blank=True, null=True, verbose_name="Изображение блюда") def __str__(self): return self.name class Meta: verbose_name = "Блюдо" verbose_name_plural = "Блюда"
Пояснения по запуску программы
Приветствую! За раннее выражаю благодарность за покупку работы
Для эффективной работы с приложением вам потребуется:
- редактор кода VS Code - скачать можно тут - https://code.visualstudio.com/download
- интерпретатор языка Python, скачать можно тут - https://www.python.org/downloads/ Рекомендую скачать версию 3.12.3
- После установки всего выше описанного, настройте VS Code для работы с Python установив необходимые расширения (см. инструкцию - https://youtu.be/j5e5gwZgMH8) .
- Переходите в директорию с проектом - в терминале вводите cd blog и затем python manage.py runserver
- Запускаете приложение и пользуетесь. Также вы можете самостоятельно выложить проект на Heroku.
admin