Skip to content

Aspirants-FS-FE/API

Repository files navigation

Сервер Джанго

Инструкция по установке:

После клонирования репозитория прописать следующие команды в терминале из соответствующего каталога: (Необходимо установить Python - написан на версии 3.8.6)

Для управления окружением в проектe используется pipenv. Если pipenv не установлен, установить:

  • MacOS: brew install pipenv,

  • Linux: sudo pip install pipenv,

  • Windows: pip install pipenv

Затем

  • pipenv install --dev - Создание нового виртуального окружения и установка зависимостей.
  • pipenv run init - установка pre-commit скриптов

Структура проекта:

  • /.github
    • /.workflows - настройки git actions
      • cz_bump.yml - конфиг автоматического версионирования
      • python-app.yml - конфиг линтеров и тестирования приложения
  • /src - рабочий каталог, содержит код сервера django
    • /config - основной проект django
    • /main_app - основное приложение (было sheduliZZZer переименовал для большей гибкости)
    • /static - статика
    • /users - django приложение реализующее модель кастомного пользователя и подключающее djoser аутентификацию.
    • manage.py
    • utils.py
  • .editorconfig - настройки ide, требует установки соответствующего плагина (download page)
  • .env - необходимо создать. Должен присутствовать в .gitignore! Содержит используемые для работы переменные (об этом ниже). Доступ к переменным из кода получаем с помощью os.enveron.get('var_name',default_value)
  • .gitatributes - настройки поведения клиента git (зачем это здесь?, документация)
  • .gitignore
  • .pre-commit-config.yml - настройка pre-commit (документация)
  • Pipfile - настройки pipenv, описание зависимостей и тд(заменяет файл requirements.txt).
  • Pipenv.lock - хранит версии используемых пакетов и их зависимостей
  • pyproject.toml - хранит настройки некотрых пакетов
  • readme.md - этот файл

Переменные окружения

Также в корне проекта необходимо создать файл .env со следующими переменными:

Обязательно:

  • SECRET_KEY - cекретный ключ Django
  • PYTHONPATH - путь к корню Django проекта сейчас это ./src/

Если используем Postgres:

  • POSTGRES - для использования Postgres устанавливаем значение on. если переменная отсутствует, либо имеет любое другое значение, например off будет использоваться Sqlite.
  • POSTGRES_DB - название базы данных
  • POSTGRES_USER - имя пользователя
  • POSTGRES_PASSWORD - пароль
  • POSTGRES_HOST - хост, для localhost: 127.0.0.1
  • POSTGRES_PORT - порт по умолчанию: 5432

Если используем почту для активации аккаунтов:

  • EMAIL_HOST - адрес почтового сервиса, например smtp.gmail.com
  • EMAIL_HOST_USER - емейл адрес для рассылки сообщений
  • EMAIL_HOST_PASSWORD- пароль
  • EMAIL_PORT - порт, для smtp.gmail.com это 587

Пример содержимого файла .env:

SECRET_KEY=+k*ppm$q7*z&1lc36u$mb4ttm_c32_gey5xbrhgq@f!9dfyfhygvh
PYTHONPATH=./src/
POSTGRES=on
POSTGRES_DB=sh_db
POSTGRES_USER=sh_user
POSTGRES_PASSWORD=password
POSTGRES_HOST=127.0.0.1
POSTGRES_PORT=5432
EMAIL_HOST=smtp.gmail.com
EMAIL_HOST_USER=admin@gmail.com
EMAIL_HOST_PASSWORD='supperpassword'
EMAIL_PORT=587

config/settings.py

В config/settings реализован автоматический выбор настроек БД (переменная POSTGRES, в файле .env). Настройки Postgres тоже берутся из файла .env

На этом приготовления закончены, для запуска прописать команду:

  • pipenv run serve

Итак: БД - для использования PostgeSQL - установить переменную в .env POSTGRES=on.

Поставил джанго дебаг.

Ipython - мне понравился.

Пока при запуске выкидивает 404 ошибку, поскольку сервер голый и нет привязак к урлам. Все шаблоны, согласно настройкам должны находиться в templates/main_app, css и js файлы в папке static/css|/js соответственно.

Использование

Для активации виртуального окружения используется команда

  • pipenv shell - Команда активирует виртуальное окружение и подгружает переменные из файла .env в корне проекта.

Рабочий процесс происходит приблизительно так:

  • pipenv shell - активация окружения
  • пишем код
  • git status покажет что наизменяли
  • git add добовляет изменения в коммит
  • cz commit (commitizen-tool) фиксирует изменения(вместо git commit). Сообщения коммитов пойдут в changelog.md! Запускает pre-commit проверки
  • Если pre-commit отработал нормально, отправляем в репо git push
  • далее редактируем ...

Иногда возникает потребность выти из виртуального окружения. Для выхода из окружения можно использовать команду exit

Если нужно выполнить одну команду в виртуальном окружении c последующим выходом из него, возможно использовать

  • pipenv run < comands >

Как пример:

  • pipenv run lint - выполнит команду lint содержащеюся в секции scripts в Pipenv файле.

Доступные команды:

  • pipenv run init - инициализация pre-commit скриптов
  • pipenv run manage - Dgango manage.py
  • pipenv run lint - проверка стиля написания кода (flake8, rules)
  • pipenv run fix - исправление стилистических ошибок - запустит black
  • pipenv run test - запуск связки pytest, pytest-django и coverage
  • pipenv run serve - тоже что и python3 ./src/manage.py runserver,запуск сервера

Кроме этого через pipenv run - можно запустить любую другую команду и она выполнится в виртуальном окружении.

Пока всё что мог, дальше будем продвигать. Если что не так сделал говорите! =)

About

backend

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 5

Languages