Giter Club home page Giter Club logo

yamdb_final's Introduction

yamdb_final

Django-app workflow

==== API для получения информации и обсуждения наиболее интересных произведений. Для автоматизации развертывания на боевых серверах используется среда виртуализации Docker, а также Docker-compose - инструмент для запуска многоконтейнерных приложений.

Стек технологий

  • Python 3
  • DRF (Django REST framework)
  • Django ORM
  • Docker
  • Gunicorn
  • nginx
  • Яндекс Облако(Ubuntu 18.04)
  • Django 2.2 TLS
  • PostgreSQL
  • GIT

О проекте

Проект доступен по адресу:

http://158.160.67.160/redoc/

http://localhost/redoc/

Реализована регистрация с кодом подтверждения и дальнейшая авторизация с использованием JWT токена, при отправке запроса к API.

Проект YaMDb собирает отзывы пользователей на произведения. Произведения делятся на категории: «Книги», «Фильмы», «Музыка». Список категорий может быть расширен администратором.

Документация и возможности API

К проекту подключен redoc. Для просмотра документации используйте эндпойнт redoc/

[Добавлена менеджмент команда, для выгрузки данных в БД, из csv.] (#описание-команды-для-заполнения-базы-данными)

Шаблон наполнения .env

# указываем, с какой БД работаем
DB_ENGINE=django.db.backends.postgresql
# имя базы данных
DB_NAME=
# логин для подключения к базе данных
POSTGRES_USER=
# пароль для подключения к БД (установите свой)
POSTGRES_PASSWORD=
# название сервиса (контейнера)
DB_HOST=
# порт для подключения к БД
DB_PORT=
SECRET_KEY=<секретный ключ проекта django>

Автоматизация развертывания серверного ПО

Для автоматизации развертывания ПО на боевых серверах используется среда виртуализации Docker, а также Docker-compose - инструмент для запуска многоконтейнерных приложений. Docker позволяет «упаковать» приложение со всем его окружением и зависимостями в контейнер, который может быть перенесён на любую Linux -систему, а также предоставляет среду по управлению контейнерами. Таким образом, для разворачивания серверного ПО достаточно чтобы на сервере с ОС семейства Linux были установлены среда Docker и инструмент Docker-compose.

Описание команд для запуска приложения в контейнерах

Для запуска проекта в контейнерах используем docker-compose : docker-compose up -d --build, находясь в директории с docker-compose.yaml

После сборки контейнеров выполяем:

# Выполняем миграции
docker-compose exec web python manage.py migrate
# Создаем суперппользователя
docker-compose exec web python manage.py createsuperuser
# Собираем статику со всего проекта
docker-compose exec web python manage.py collectstatic --no-input
# Для дампа данных из БД
docker-compose exec web python manage.py dumpdata > dump.json

Пройдите по адресу http://localhost/admin/ , авторизуйтесь как созданный выше суперпользователь, и внесите записи в базу данных через админ панель.

Для выгрузки данных из дампа (резервной копии) в БД

docker-compose exec web bash
# Сброс БД, суперюзеры так же удаляются
>>> python manage.py flush

>>> python3 manage.py shell  
        # выполнить в открывшемся терминале:
>>>>>> from django.contrib.contenttypes.models import ContentType
>>>>>> ContentType.objects.all().delete()
>>>>>> quit()

>>> python manage.py loaddata dump.json

Описание команды для заполнения БД данными из csv

python manage.py import_csv_to_db в контейнере web (docker-compose exec web bash)

Это - менеджмент команда.

Выгружаются данные из файлов директории api_yamdb/static

НО, прежде выполнить миграции! В случае изменения названий моделей/csv файлов и которых брать данне - изменить настройки в api_yamdb/reviews/management/commands/_settings_for_import.py, а именно:

NEED_TO_PARSE = {
'users.csv': User,
'category.csv': Category,
'genre.csv': Genre,
'titles.csv': Title,
'genre_title.csv': Genre_title,
'review.csv': Review,
'comments.csv': Comment,
}

Авторы

  • Александр Ратушнюк

  • Евгений Березовский

  • Наталья Петелина

yamdb_final's People

Contributors

aleksander-vlz avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.