О чем этот проект
Этот репозиторий с шаблонами для быстрого создания Django проекта.
В шаблоне проекта настроены следующий технологий:
Djangogunicorn(В качествеWSGIсервера)Django Ninja(В качествеREST API)DockerDocker-composeNginx(ЧерезDocker-compose)PostgreSQL(ЧерезDocker-compose).env(Все важные настройки проекта хранятся в переменных окружения)Makefile(Готовые стандартные команды для работы с проектом)npmReact(Для рендеринга шаблонов)webpack.config.js(Для автоматической сборкиReactпри изменении файлов).gitignore&&.dockerignore
Установка
Наша задача скопировать(с заменой) данные шаблон в папку где хранятся стандартные шаблоны Djnago.
Вот пример замены стандартных шаблонов Django на наши, будем использовать виртуальное окружение venv, и Linux. ( Этот скрипт можно выполнить за одну команду).
# Создаем папку со всем проектом, И переходим в неё
dir="ИмяПроекта";
mkdir ${dir} && cd ${dir};
# Копируем этот репозиторий.
git clone https://github.com/denisxab/django-start-pack.git .;
# На всякий случай выходим из ВО если мы в нем находимся.
deactivate;
# Создаем виртуальное окружение, Актируем его, устанавливаем `Django`.
python -m venv venv && . ./venv/bin/activate && pip install Django;
# Создаем переменную с версий текущего ВО `Python`.
py_version=$(python -c 'import sys; print(".".join(map(str, sys.version_info[:2])))');
# Удаляем стандартные шаблон проекта и приложения `Django`.
rm -rf ./venv/lib/python${py_version}/site-packages/django/conf/project_template ./venv/lib/python${py_version}/site-packages/django/conf/app_template;
# Копируем шаблоны из репозитория в ВО.
cp -r project_template ./venv/lib/python${py_version}/site-packages/django/conf/ &&
cp -r app_template ./venv/lib/python${py_version}/site-packages/django/conf/ &&
# Удаляем ненужные файлы/папки.
rm -rf project_template app_template .git;
# Показать результат `Django` шаблона
tree ./venv/lib/pythonn${py_version}/site-packages/django/conf/project_template &&
tree ./venv/lib/pythonn${py_version}/site-packages/django/conf/app_template;
Использование
Создать проект (-e указывает расширение файлов которые нужно отрендерить как шаблон)
django-admin startproject <ИмяПроекта> -e py,env,dockerignore,gitignore,json;
Создать приложение (-e указывает расширение файлов которые нужно отрендерить как шаблон)
django-admin startapp <ИмяПриложения> -e py,env,dockerignore,gitignore,json;
Настроим и запустим проект.
cd <ИмяПроекта>;
# Первоначально настраиваем проект
make init_proj;
# Запуска `webpack`
make webpack_run;
# Запускам `Django` сервер (запустите в новом окне)
make dj_run;
И теперь можно начинать разрабатывать свой проект, не задумываться о первоначальных настройках.
Особенности созданного проекта через этот шаблон
- Главное приложение теперь имеет название
conf - Файл с переменными окружения называется
__env.env - Все настройки проекта хранят в файле с переменными окружения
./__env.env. Его нужно держать в тайне, так как в нём будут храниться приватные настройки для БД иDjango. Он уже занесен в.gitignore&&.dockerignore - Для быстрого и удобного исполнения команд есть
./Makfile. Для исполнения этого файла необходимо иметь программуmake. НаUbuntuможно скачать эту программу командойsudo apt install make. - Есть файл
./Dockerfileдля создания контейнера с проектом.make docker_build- собрать образ (Для правильной сборки образа и контейнера прочитайтеMakfileв нем уже реализованы все необходимые настройки). - Есть файл
./docker-compose.ymlдля создания контейнера сPostgreSQLиnginx.make docker_compose_up- запустить контейнеры (Для правильной сборки образа и контейнера прочитайтеMakfileв нем уже реализованы все необходимые настройки). - В папке
./deploy/gunicornхранятся настройки для запускаgunicorn, в этой же папке будут храниться логи отgunicorn. - В папке
./ <имяпроекта> /__cacheхраниться кешDjango. Название этой папки определено настройкамиsettings.py->CACHES->"default"->"LOCATION"->"__cache" - В папке
dbбудет хранитьсяvolumes(термин изDocker) для БД. - В качестве шаблонизатор будем использовать
Reactкоторый храниться в приложениеfrontend_react. Главный компонентReactнаходиться по путиИмяПроекта->frontend_react->src->App.js - Скомпилированный код
webpackхраниться по путиИмяПроекта->frontend_react->static->frontend_react->public->main.js
Особенности созданного приложения через этот шаблон
- Есть папки
static,templates,templatetags - Есть предварительные шаблоны для моделей и админ панели