После клонирования репозитория прописать следующие команды в терминале из соответствующего каталога: (Необходимо установить 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 actionscz_bump.yml- конфиг автоматического версионированияpython-app.yml- конфиг линтеров и тестирования приложения
/src- рабочий каталог, содержит код сервера django/config- основной проект django/main_app- основное приложение (былоsheduliZZZerпереименовал для большей гибкости)/static- статика/users- django приложение реализующее модель кастомного пользователя и подключающее djoser аутентификацию.manage.pyutils.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екретный ключ DjangoPYTHONPATH- путь к корню Django проекта сейчас это./src/
Если используем Postgres:
POSTGRES- для использования Postgres устанавливаем значениеon. если переменная отсутствует, либо имеет любое другое значение, напримерoffбудет использоваться Sqlite.POSTGRES_DB- название базы данныхPOSTGRES_USER- имя пользователяPOSTGRES_PASSWORD- парольPOSTGRES_HOST- хост, для localhost: 127.0.0.1POSTGRES_PORT- порт по умолчанию: 5432
Если используем почту для активации аккаунтов:
EMAIL_HOST- адрес почтового сервиса, напримерsmtp.gmail.comEMAIL_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 реализован автоматический выбор настроек БД (переменная 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.pypipenv run lint- проверка стиля написания кода (flake8, rules)pipenv run fix- исправление стилистических ошибок - запустит blackpipenv run test- запуск связки pytest, pytest-django и coveragepipenv run serve- тоже что иpython3 ./src/manage.py runserver,запуск сервера
Кроме этого через pipenv run - можно запустить любую другую команду и она выполнится в виртуальном окружении.
Пока всё что мог, дальше будем продвигать. Если что не так сделал говорите! =)