Днес ще се гмурнем в света на Cookiecutter Django – мощен инструмент, който революционизира начина, по който разработчиците подхождат към Django проекти. Ще споделя своя опит с Cookiecutter Django, ще обясня неговите предимства и ще ви предоставя практически съвети и примери за използването му във вашия работен процес за разработка. Приготвили ли сте се? Нека започваме!
Какво представлява Cookiecutter Django?
Cookiecutter Django е шаблон или скеле за бързо и ефективно стартиране на Django проекти. Той предоставя предварително конфигурирана структура и набор от най-добри практики, които помагат на разработчиците да започнат със солидна основа за своите Django приложения.
Създаден от Daniel Roy Greenfeld, съавтор на популярната книга „Two Scoops of Django“, Cookiecutter Django обобщава години опит и експертиза в разработката с Django. Това го прави безценен ресурс за всеки Django разработчик, независимо от нивото на опит.
Бързо инициализиране на проекти
Една от основните причини да обичам Cookiecutter Django е бързината и лекотата, с която мога да инициализирам нов Django проект. С една единствена команда Cookiecutter Django генерира цялостна структура на проект, включваща всички необходими файлове и конфигурации. Това ми спестява значително количество време и усилия в сравнение със създаването на проект от нулата.
Нека видим как работи:
1. Първо, инсталирайте Cookiecutter:
# Installation
pip install cookiecutter
2. След това изпълнете следната команда, за да стартирате нов проект:
cookiecutter https://github.com/cookiecutter/cookiecutter-django.git
3. Ще бъдете подканени да въведете различни настройки за вашия проект, като име на проекта, име на приложението, база данни и т.н. Можете да приемете стойностите по подразбиране или да ги персонализирате според вашите нужди.
4. След като предоставите всички необходими информация, Cookiecutter Django ще генерира структурата на вашия проект със всички необходими файлове и конфигурации.
Вместо ръчно да създавам директории, да настройвам файлове с настройки и да конфигурирам различни аспекти на Django проект, Cookiecutter Django се грижи за целия шаблонен код вместо мен. Мога да се съсредоточа върху уникалните аспекти на моя проект и да започна да изграждам основната функционалност веднага.
Вградени най-добри практики
Друга убедителна причина да използвате Cookiecutter Django е, че той идва с множество вградени най-добри практики и доказани модели. Структурата на проекта, генерирана от Cookiecutter Django, следва препоръките, описани в книгата „Two Scoops of Django“, която е широко призната като ресурс за Django разработчици.
Използвайки Cookiecutter Django, мога да бъда сигурен, че моят проект следва индустриалните стандарти и следва чиста, поддържана структура. Генерираният код е добре организиран, с отделни директории за приложения, шаблони, статични файлове и тестове. Тази структура насърчава модулността и улеснява навигацията и разбирането на кодовата база.
Освен това, Cookiecutter Django включва различни конфигурационни файлове и настройки, които са оптимизирани за различни среди, като разработка, стейджинг и продукция. Това ми спестява усилията да конфигурирам ръчно настройките за всяка среда и гарантира, че проектът ми е готов за разполагане с минимални усилия.
Обширни опции
Cookiecutter Django предлага впечатляващ набор от опции за функции, които удовлетворяват широк спектър от изисквания за проекти. При инициализиране на проект мога да избирам измежду разнообразни функции, като удостоверяване на потребителите, бекенд за бази данни, кеширане и много други. Тази гъвкавост ми позволява да адаптирам проекта си към специфични нужди и да избягвам ненужно раздуване.
Ето някои от основните функции, които могат да бъдат включени с Cookiecutter Django (актуални към Юни 2024 г.):
- За Django 4.2 (LTS)
- Работи с Python 3.12
- Визуализира Django проекти със 100% начално покритие на тестовете
- Twitter Bootstrap v5 (обикновено добавям Tailwind CSS, тъй като ми харесва повече)
- Настройки, базирани на 12-Factor чрез django-environ
- Сигурен по подразбиране, използва SSL
- Оптимизирани настройки за разработка и продукция
- Регистрация чрез django-allauth
- Идва с персонализиран потребителски модел, готов за използване
- Опционална основна ASGI настройка за Websockets
- Опционално персонализирано статично изграждане с използване на Gulp или Webpack
- Изпращане на имейли чрез Anymail (по подразбиране се използва Mailgun или Amazon SES, ако е избран доставчик на Amazon Web Services, но може да се превключва)
- Съхранение на медии с помощта на Amazon S3, Google Cloud Storage, Azure Storage или nginx
- Поддръжка на Docker с използване на docker-compose за разработка и продукция (използвайки Traefik с поддръжка на LetsEncrypt)
- Procfile за разполагане в Heroku
- Инструкции за разполагане (deployment) в PythonAnywhere
- Изпълнение на тестове с unittest или pytest
- Персонализируема версия на PostgreSQL
- Интеграция по подразбиране с pre-commit за идентифициране на прости проблеми преди подаване за преглед на код
Цялостна екосистема и поддръжка
Едно от големите предимства на използването на Cookiecutter Django е динамичната общност, която го заобикаля. Проектът има голяма и активна потребителска база, което означава, че мога да се възползвам от богатството от знания и опит, когато ми трябва помощ или насоки.
В допълнение, проектът поддържа изчерпателна документация, която ме води през различните аспекти на използването на Cookiecutter Django. Документацията обхваща всичко – от инсталация и създаване на проект до персонализиране и разполагане. Ако някога заседна или имам въпроси, мога да се обърна към документацията или да се свържа с общността за поддръжка.
Стабилност и дългосрочна поддръжка
При избора на шаблон или скеле за проекти, стабилността и дългосрочната поддръжка са от решаващо значение. Cookiecutter Django има доказана репутация за стабилност и се поддържа активно от отдаден екип от сътрудници.
Проектът следва редовен цикъл на издаване, като нови версии се пускат, за да включват най-новите най-добри практики, корекции на грешки и съвместимост с по-нови версии на Django. Това гарантира, че моите проекти, изградени с Cookiecutter Django, остават актуални и сигурни.
Освен това, поддръжката на Cookiecutter Django се ангажира с обратна съвместимост, което означава, че мога да надстроя проектите си до по-нови версии на шаблона, без да наруша съществуващата функционалност. Тази дългосрочна стабилност ми дава спокойствие и ми позволява да се съсредоточа върху изграждането на моите приложения, вместо да се притеснявам за основния шаблонен код.
Демонстрация на работен процес с Cookiecutter Django
За да илюстрирам колко лесно и ефективно е да се използва Cookiecutter Django, нека преминем през примерен работен процес за стартиране на нов проект. Ще демонстрираме как да създадем основно приложение за блог с помощта на Cookiecutter Django.
1. Инсталирайте Cookiecutter:
pip install cookiecutter
2. Стартирайте нов Django проект:
cookiecutter https://github.com/cookiecutter/cookiecutter-django.git
3. Въведете желаните настройки за проекта, като следвате подканите. За целите на тази демонстрация ще използваме стойностите по подразбиране с някои персонализации:
project_name [My Awesome Project]: My Blog
project_slug [my_blog]:
description [Behold My Awesome Project!]: A simple blog application built with Django and Cookiecutter
author_name [Daniel Roy Greenfeld]: Simeon Emanuilov
domain_name [example.com]: myblog.com
email [[email protected]]:
version [0.1.0]:
Select open_source_license:
1 - MIT
2 - BSD
3 - GPLv3
4 - Apache Software License 2.0
5 - Not open source
Choose from 1, 2, 3, 4, 5 [1]: 1
timezone [UTC]: Europe/Sofia
windows [n]: n
use_pycharm [n]: y
use_docker [n]: n
Select postgresql_version:
1 - 14
2 - 13
3 - 12
4 - 11
5 - 10
Choose from 1, 2, 3, 4, 5 [1]: 1
4. Отидете в новосъздадената директория на проекта:
cd my_blog
5. Създайте и активирайте виртуална среда:
python -m venv venv
source venv/bin/activate
6. Инсталирайте зависимостите на проекта:
pip install -r requirements/local.txt
7. Създайте нова Django апликация за блога:
python manage.py startapp blog
8. Добавете новосъздаденото приложение blog в INSTALLED_APPS в config/settings/base.py:
INSTALLED_APPS = [
...
"my_blog.blog.apps.BlogConfig",
...
]
9. Дефинирайте моделите за блог постове в blog/models.py:
from django.db import models
from django.contrib.auth import get_user_model
User = get_user_model()
class Post(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
author = models.ForeignKey(User, on_delete=models.CASCADE)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
def __str__(self):
return self.title
10. Създайте и приложете миграции за моделите:
python manage.py makemigrations blog
python manage.py migrate
11. Създайте superuser акаунт:
python manage.py createsuperuser
12. Стартирайте сървъра за разработка:
python manage.py runserver
13. Посетете административния панел на адрес http://localhost:8000/admin/ и добавете няколко примерни блог поста.
14. Създайте необходимите изгледи (views) и шаблони за показване на блог постовете.
Това е! С минимални усилия успяхме да създадем основна блог апликация, използвайки Cookiecutter Django. Структурата на проекта е чиста, следва най-добрите практики и е готова за допълнителна персонализация и разширяване.
Заключение
Cookiecutter Django се превърна в незаменим инструмент в моя работен процес за разработка с Django. Неговата способност бързо да инициализира проекти, да прилага най-добри практики и да предоставя широк набор от опции за функции значително подобри моята производителност и качество на кода.
Чрез използване на експертизата и опита, обобщени в Cookiecutter Django, мога да стартирам проектите си с увереност, знаейки, че разполагам със солидна основа, върху която да градя. Динамичната общност, изчерпателната документация и дългосрочната стабилност на проекта ми дават необходимата подкрепа и увереност за справяне с всяко предизвикателство при разработката с Django.
Ако сте Django разработчик, търсещ начини да рационализирате своя процес на разработка и да възприемете най-добри практики в индустрията, горещо препоръчвам да опитате Cookiecutter Django. Той преобрази начина, по който подхождам към Django проекти, и съм уверен, че може да направи същото и за вас.
Защо тогава да не се присъедините към безбройните разработчици, които вече са открили мощта и ефективността на Cookiecutter Django? Започнете следващия си Django проект с Cookiecutter и изпитайте радостта да изграждате приложения върху основа от най-добри практики и доказани модели.