Що таке шаблон проєкту на Django
Мало хто знає, що в Django можна встановити проєкт з шаблону, тобто зі спеціальної структури директорій.
Така фіча стає у пригоді, коли звичайного формату проєкту вже недостатньо (повірте, цей момент настане не скоріше, ніж розгортання проєкту в продакшені) або ж ви дійшли до того моменту, коли повторюєте ті самі конфігурації знов і знов для чергового проєкту на Django.
Шаблон проєкту на Django — не що інше, як попередньо налаштований проєкт з користувацькою структурою директорій. А найголовніше — ви можете зробити власний шаблон за кілька хвилин.
Прикладом популярного шаблону на Django є django-cookiecutter. Він містить широкий спектр фіч та конфігурацій для стійких деплоїв у продакшен. django-cookiecutter — це чудовий вибір для майже будь-якого нового проєкту на Django.
Однак можливостей django-cookiecutter іноді забагато, особливо для початківців. Простіший шаблон проєкту на Django допоміг би задовольнити базові вимоги, перш ніж починати роботу з django-cookiecutter.
Далі ми розглянемо, як саме створити шаблон для власних потреб.
Як створити власний шаблон проєкту на Django
Для початку створимо віртуальне середовище Python у теці на вибір та встановимо Django (зауважте, що це окремі чотири команди).
mkdir project-name && cd $_
python3 -m venv venv
source venv/bin/activate
pip install django
Далі створюємо Django-проєкт:
django-admin startproject project_name .
Зверніть увагу на назву: вона повинна бути точнісінько, як project_name
. Виконавши ці кроки, відкрийте проєкт в редакторі.
(Помітьте, що для прикладу автор використовує project-name
як назву зовнішньої теки та project_name
як назву проєкту).
Тепер вам необхідно пройтися кожним файлом в проєкті та замінити всі входження project_name
на {{ project_name }}
.
Файли, які потребують редагування:
-
manage.py
-
settings.py
-
wsgi.py
-
asgi.py
Як ви могли здогадатися, {{ project_name }}
— шаблонна змінна. Наприклад, у файлі manage.py
ви заміните його вміст:
# manage.py
def main():
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'project_name.settings')
try:
# omit
на такий:
# manage.py
def main():
os.environ.setdefault('DJANGO_SETTINGS_MODULE', '{{ project_name }}.settings')
try:
# omit
А от в wsgi.py
заміните:
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'project_name.settings')
на це:
os.environ.setdefault('DJANGO_SETTINGS_MODULE', '{{ project_name }}.settings')
І так далі.
Ви, можливо, захочете скоригувати певні налаштування або навіть розділити налаштування Django на окремі файли для розробки, тестування та продакшену. З прикладом можна ознайомитись за посиланням.
Перш ніж рухатись далі, не забудьте видалити віртуальне середовище з шаблонного проєкту.
Як створити проєкт на Django з власного шаблону
З шаблонним проєктом ми можемо одразу ж створити нове віртуальне середовище Python в іншій теці та встановити Django:
mkdir new-django-project && cd $_
python3 -m venv venv
source venv/bin/activate
pip install django
Замість того щоб виконувати команду django-admin startproject
просто так, ми передамо прапор --template
для встановлення з шаблону. Припустимо, ви створили шаблон у домашній директорії: ~/project-name
. Тоді ви виконаєте:
django-admin startproject --template ~/project-name new_django_project .
Цією командою ви створюєте новий проєкт на Django з шаблону.
(Зверніть увагу, що у прикладі автор використовує new-django-project
як назву зовнішньої теки та new_django_project
як назву проєкту).
Тепер ви бачите, як це зручно, та, напевне, цікавитесь, чи можна брати сторонній шаблон. Наприклад, з Github-репозиторію.
Так, ви можете!
Як створити проєкт на Django зі стороннього шаблону
Прапор --template
для startproject
приймає також URL стороннього ресурсу. Тобто ви можете встановити проєкт на Django зі стороннього шаблону так:
django-admin startproject --template https://github.com/username/repo/archive/master.zip new_django_project .
Бонус: шаблонізуйте всі штуки
Окрім шаблонізації файлів Django, ви також можете створити шаблони для будь-яких інших файлів проєкту.
Уявіть, що ви хочете розгорнути проєкт на Heroku, де потрібен Procfile. Щоб передати Procfile через усю шаблонну систему, аби замінити {{ project_name }}
на справжню назву проєкту, ви можете запустити команду startproject
з прапором --name
:
django-admin startproject --template https://github.com/username/repo/archive/master.zip --name=Procfile new_django_project .
Переконайтеся, що у вас є потрібні шаблони для project_name
у Procfile:
release: python manage.py migrate
web: gunicorn -w 3 {{ project_name }}.wsgi --log-file -
Ресурси
Якщо хочете ознайомитись з більш комплексними шаблонами Django, зверність увагу на ponee, легкий шаблон Django-проєкту для розгортання на Heroku.
Ще немає коментарів