Django («Джанго») — это свободный фреймворк для разработки быстрых и безопасных веб-приложений и сайтов на языке Python. Использует шаблон проектирования MVC.
Django создали в 2003–2005 годах веб-программисты онлайн-версии Lawrence Journal-World Адриан Головати и Саймон Уиллисон. Фреймворк назван в честь французского гитариста-виртуоза Джанго Рейнхардта (Рана Ренара). Первая версия опубликована в 2005 году. С тех пор фреймворк обновляется 1–2 раза в год. С 2008 года поддержкой и развитием занимается организация Django Software Foundation (DSF).
Как работает Django
Как и любой другой фреймворк, «Джанго» — это программная платформа (каркас), на который разработчик «навешивает» дополнительные компоненты приложения, например:
- интерфейс пользователя;
- скрипты (сценарии) работы элементов приложения/сайта;
- программные библиотеки;
- мультимедийный контент (фото, видео, аудио);
- модули безопасности;
- базы данных и т.д.
Фреймворк отвечает за базовые аспекты работы продукта. А подключаемые (сменные) модули — за специфичные функции конкретного приложения.
Использование фреймворков позволяет:
- ускорить разработку;
- упростить поддержку;
- избежать ошибок в работе приложения.
Способ организации кода «Модель–представление–контроллер» (MVC)
- Модель — бизнес-логика, то есть совокупности методов, правил и ограничений работы с данными.
- Представление — компонент, отображающий пользователю данные в зависимости от изменения модели.
- Контроллер — программный посредник, обрабатывающий действия пользователя и сообщающий модели, как она должна измениться.
Контроллер классической модели MVC примерно соответствует уровню, который в Django называется представлением (англ. View), а презентационная логика представления реализуется в Django уровнем шаблонов (англ. Template). Поэтому архитектуру Django часто называют «Модель–шаблон–представление» (MTV):
- модель по-прежнему отвечает за работу с данными (доступ, обработку, проверку и т.д.);
- шаблоны определяют, как будет отображаться информация;
- представление описывает, какие именно данные будут показываться пользователю.
Принцип повторяет концепцию MVC, поэтому Django относится к MVC-совместимым платформам.
Концепция DRY (Don’t repeat yourself — «Не повторяйся»)
Для реализации аналогичных или схожих задач используются одни и те же элементы кода, а не пишутся каждый раз новые. Благодаря этому отсутствует дублирование, усложняющее и увеличивающее размер приложения, и упрощаются разработка и поддержка программного продукта.
Использование независимых (отчуждаемых и подключаемых) компонентов
Разработчик может модифицировать конкретный модуль без внесения изменения в другие. При этом итоговый программный продукт останется функциональным.
Структура Django
Базовая структура фреймворка включает следующие компоненты:
- URL-маршрутизаторы, перенаправляющие HTTP-запрос от браузера или любого иного веб-клиента в представления;
- представление, которое обрабатывает запрос, обращается к модели и сообщает ей, какие именно данные из БД нужно задействовать, чтобы удовлетворить запрос;
- модель (менеджер базы данных, ORM), «вытаскивающую» нужную информацию из БД и передающую ее представлению;
- HTML-шаблоны, которые используются представлением для демонстрации пользователю полученных от модели данных.
Примерная схема работы приложения на Django:
В структуру Django входят узкоспециализированные модули и функции, в том числе:
- веб-сервер для разработки и тестирования продукта;
- встроенный диспетчер для обмена событиями между компонентами приложения с помощью установленных сигналов;
- система интернационализации, адаптирующая Django к различным языковым и культурным регионам;
- встроенные модули аутентификации и авторизации, а также функция подключения аналогичных внешних блоков;
- фильтры для дополнительной обработки запросов (кеширования, сжатия, перенаправления и т.д.);
- интерфейс администратора для добавления, редактирования, удаления содержимого приложения/сайта;
- интерфейс внутренней платформы тестирования Python;
- инструменты для комментирования;
- модуль защиты от межсайтовых скриптов, взлома пароля и других распространенных типов сетевых атак.
Благодаря открытому коду функционал Django можно расширить за счет внешних программных пакетов. Их перечень и описание возможностей публикуются на сайте www.djangopackages.com.
Преимущества Django
Полнота
Фреймворк Django спроектирован по принципу «Все включено». Разработчик может с его помощью создать веб-приложение без сторонних компонентов. Это полезно для начинающих программистов, так как им не приходится отвлекаться на поиск дополнительных инструментов для решения типовых задач.
Универсальность
Django подходит для разработки веб-сайтов и приложений любого типа: систем управления контентом, новостных или информационных ресурсов, видеохостингов, социальных сетей и т.д. Он может работать с любыми типами файлов, различными базами данных, клиентскими средами. Если в «коробочной» версии фреймворка нет компонента для реализации конкретного продукта, его можно получить из сторонних источников.
Надежность
Django поддерживается и развивается Django Software Foundation, а также сообществом сторонних разработчиков. Фреймворк обновляется и совершенствуется, проверяется на ошибки. Созданные приложения стабильные и содержат меньше багов по сравнению с разработанными на других фреймворках, CRM или написанными с нуля.
Масштабируемость
Архитектура Django строится на независимости составляющих частей. Любой компонент можно заменить или модифицировать, не затрагивая другие. Возможности Django позволяют как разрабатывать приложения, так и расширять их при увеличении трафика и нагрузки.
Сопровождаемость
Django позволяет повторно использовать код, группировать связанные функции в отдельные модули. Это облегчает, сокращает и упрощает структуру приложения. Если у проекта сменился разработчик, он сможет быстро разобраться в архитектуре ПО и обеспечить качественную поддержку.
Безопасность
У Django есть встроенные инструменты защиты от распространенных хакерских атак. Также он позволяет эффективно распределять доступ к данным среди пользователей разного уровня. Это повышает безопасность продукта и стабильность его работы.
Переносимость
Язык программирования Django — Python, адаптированный ко всем распространенным платформам. Разработанные на фреймворке приложения одинаково хорошо работают на Windows, Mac OS X и Linux-based операционных системах, а также их версиях. Django поддерживают веб-хостинги с подходящей инфраструктурой и документацией.
Открытость
Django — открытое ПО, поэтому любой желающий может использовать его для создания приложения или сайта, в том числе для коммерческого использования.
Обширная экосистема
Для Django существует большое количество сторонних подключаемых модулей, различных инструкций, лайфхаков и т.д. Официальный разработчик также предоставляет обширную документацию, упрощающую работу с Django.
Гибкость
«Джанго» — «умеренно гибкий» фреймворк. Он предоставляет несколько инструментов для решения одной задачи и 1–2 подхода к их использованию. То есть разработчик может выбирать между различными опциями и одновременно не теряться в их многообразии.
Недостатки Django
Монолитная архитектура
«Джанго» развивается как единый и самодостаточный комплекс инструментов разработчика. Это позволяет реализовывать даже крупные проекты, не обращаясь к сторонним приложениям и сервисам, но и тормозит развитие самого фреймворка. Разработчикам приходится тратить силы на все инструменты, входящие в его ядро.
Устаревший ORM
У Django есть свой менеджер базы данных, которая позволяет работать с различными типами БД. Однако у нее отсутствуют некоторые полезные функции, которые есть в других ORM и активно используются разработчиками. Основной недостаток — отсутствие интеграции с SQLAlchemy, являющейся основным инструментом работы с базами данных на языке Python.
Отсутствие многозадачности
«Джанго» не позволяет отдельным процессам работать с несколькими запросами одновременно. Несмотря на то что разработчики пытаются решить проблему, им приходится использовать различные подходы.
Шаблон маршрутизации URL
Основан на использовании регулярных выражений (символов и метасимволов), задающих правила поиска. Механизм исправно работает, однако его настройка вызывает затруднения у новичков, повышая порог вхождения.
Установка Django
Процесс различается в зависимости от версии фреймворка, а также аппаратной платформы и установленной операционной системы. Рассмотрим рекомендуемый способ установки Django на персональный компьютер под управлением ОС Windows.
Подготовка
Так как Django написан на языке Python, сначала нужно установить интерпретатор. Это программа, которая распознает исходный код скрипта и переводит его в машинный код (байткод), который выполняется операционной системой. Помимо интерпретатора нужно установить pip — менеджер пакетов. Часто эта программа загружается вместе с Python, но лучше проверить ее наличие, вбив в командную строку команду pip -v. Если менеджер установлен, терминал покажет ее версию, если нет — укажет, что pip не является внутренней или внешней командой, исполняемой программой или пакетным файлом. В таком случае его нужно загрузить вручную.
Установка виртуальной среды
Этот этап не обязательный, но упрощающий программисту работу с Django. С помощью виртуальной среды можно запускать несколько приложений на Python независимо друг от друга. Например, если ранее был уже разработан один проект на старой версии Django, то при появлении обновленного фреймворка можно создать второй проект, не затрагивая первый. Это позволит пользоваться всеми преимуществами новой версии «Джанго», не тратя время на обновление предыдущей. Для использования виртуальной среды ее нужно предварительно активировать с помощью файла activate.bat. Это нужно делать каждый раз при работе с проектом на Django. После окончания работы виртуальную среду нужно деактивировать с помощью файла deactivate.bat.
Установка Django
После установки и активации виртуальной среды можно инсталлировать фреймворк. Для этого нужно ввести в консоль команду pip install Django. Система сама найдет, скачает и установит свежую версию фреймворка для конкретной программной и аппаратной платформы.
Настройка проекта на Django
Чтобы создать проект на Django, нужно предварительно задать специальную директорию на жестком диске, например C:\django. Далее необходимо перейти в командной строке в этот каталог, используя команду cd.
После установки Django в папке виртуальной среды появляется скрипт django-admin.py, а в ОС Windows — исполняемый файл django-admin.exe. На Windows их можно найти в подкаталоге Scripts. Скрипт django-admin включает несколько команд для управления проектом. Например, для его создания используется директива startproject. Далее работа с проектом строится по следующему алгоритму:
- активируется заранее установленная виртуальная среда. Для удобства работы нужно присвоить ей имя;
- с помощью команды django-admin startproject запускается сам проект, а в текущей папке появляется его подкаталог.
Проект включает следующие элементы:
- manage.py — исполняет различные команды, в частности запускает приложение;
- __init__.py — стандартный для Python файл, придающий папке, в которой он располагается, свойства модуля;
- settings.py — отвечает за настройки проекта;
- urls.py — включает шаблоны URL-адресов, чем задает систему маршрутизации;
- wsgi.py — содержит параметры конфигурации WSGI (Web Server Gateway Interface), которые применяются при развертывании проекта.
Чтобы запустить выполнение проекта, нужно перейти в консоли к его папке и задействовать команду python manage.py runserver. После этого в командной строке отобразится адрес, на котором будет размещен проект, — как правило, http://127.0.0.1:8000/. Если ввести его в поисковую строку любого браузера, откроется содержимое по умолчанию. По сути, это уже работающий проект со стандартным базовым контентом. Дальнейшая работа будет заключаться в том, чтобы заменить содержимое на свое веб-приложение.
Когда применять и не применять Django
«Джанго» разработали программисты новостных сайтов. Это во многом определило специфику архитектуры. Фреймворк идеально подходит для создания информационных порталов, онлайн-версий печатных журналов или других цифровых СМИ. Сегодня с его помощью разрабатываются социальные сети, видеохостинги, музыкальные сервисы, поисковики и т.д. Веб-фреймворк Django используется в сайтах:
- Instagram*;
- YouTube;
- The Guardian;
- Pinterest;
- сайт NASA;
- Mozilla;
- The Washington Times;
- Disqus и т.д.
Использовать Django можно, если:
- предъявлены высокие требования к стабильности приложения и его защите от хакерских атак;
- предполагается возможное наращивание или сокращение проекта;
- в проекте планируется использовать различные базы данных;
- есть ограничения по времени развертывания, а также финансовому обеспечению;
- планируется применять в проекте передовые IT-технологии (например нейросети);
- проект разрабатывается и поддерживается различными специалистами (группами разработчиков);
- недостаточно опыта для разработки веб-приложений и сайтов с нуля;
- нужна поддержка ORM, чтобы не работать напрямую с запросами к базам данных.
Выбрать другие варианты лучше:
- при реализации проекта со сложной и разветвленной структурой, широким функционалом (но можно использовать Django для разработки его отдельных частей);
- написании простого приложения с минимальным функционалом, не задействующим базы данных;
- реализации проекта со специфичной архитектурой и функционалом, требующим написания кода с нуля;
- отсутствии базовых знаний и опыта работы с Python.
Django — один из наиболее востребованных фреймворков на Python. Применение в проектах ведущих компаний подтверждает его удобство, универсальность и надежность.
* Принадлежит компании Meta, деятельность которой признана экстремистской в России.
0 комментариев