Веб-фреймворк
- 1 year ago
- 0
- 0
Django (Джанго, ['dʒæŋɡoʊ] ) — свободный фреймворк для веб-приложений на языке Python , использующий шаблон проектирования MVC . Проект поддерживается организацией Django Software Foundation .
Сайт на Django строится из одного или нескольких приложений, которые рекомендуется делать отчуждаемыми и подключаемыми. Это одно из существенных архитектурных отличий этого фреймворка от некоторых других (например, Ruby on Rails ). Один из основных принципов фреймворка — DRY ( англ. Don't repeat yourself )
Также, в отличие от других фреймворков, обработчики URL в Django конфигурируются явно при помощи регулярных выражений .
Для работы с базой данных Django использует собственный ORM , в котором модель данных описывается классами Python, и по ней генерируется схема базы данных .
Веб-фреймворк Django используется в сайтах Instagram , Disqus , Mozilla , The Washington Times , Pinterest , YouTube , Google и др.
Также Django используется в качестве веб-компонента в проектах:
Разработчики заявляют, что не обязуются строго придерживаться какой бы то ни было методологии в развитии проекта, предпочитая делать то, что кажется им наиболее логичным.
Архитектура Django похожа на « Модель-Представление-Контроллер » (MVC). Контроллер классической модели MVC примерно соответствует уровню, который в Django называется Представление ( англ. View ), а презентационная логика Представления реализуется в Django уровнем Шаблонов ( англ. Template ). Из-за этого уровневую архитектуру Django часто называют «Модель-Шаблон-Представление» (MTV).
Первоначальная разработка Django как средства для работы новостных ресурсов достаточно сильно отразилась на его архитектуре: он предоставляет ряд средств, которые помогают в быстрой разработке веб-сайтов информационного характера. Так, например, разработчику не требуется создавать контроллеры и страницы для административной части сайта, в Django есть встроенное приложение для управления содержимым, которое можно включить в любой сайт, сделанный на Django, и которое может управлять сразу несколькими сайтами на одном сервере. Административное приложение позволяет создавать, изменять и удалять любые объекты наполнения сайта, протоколируя все совершённые действия, и предоставляет интерфейс для управления пользователями и группами (с пообъектным назначением прав).
В дистрибутив Django также включены приложения для системы комментариев, синдикации RSS и Atom , «статических страниц» (которыми можно управлять без необходимости писать контроллеры и представления), перенаправления URL и другое.
Некоторые возможности Django:
Некоторые компоненты фреймворка между собой связаны слабо, поэтому их можно достаточно просто заменять на аналогичные. Например, вместо встроенных шаблонов можно использовать Mako или Jinja .
В то же время заменять ряд компонентов (например, ORM) довольно сложно.
Помимо возможностей, встроенных в ядро фреймворка, существуют пакеты, расширяющие его возможности. Возможности, предоставляемые пакетами, а также полный перечень пакетов удобно отслеживать через специальный ресурс — .
Некоторые выпуски Django получают статус «релиза с долгосрочной поддержкой» (LTS) . Они получают обновления по безопасности и по защите от потерь данных на гарантированный период времени, обычно от трёх лет.
Версия | Дата | Примечание |
---|---|---|
0.90 | 16 ноя 2005 | |
0.91 | 11 янв 2006 | «new-admin» |
0.95 | 29 июл 2006 | «magic removal» |
0.96 | 23 мар 2007 | «newforms», средства тестирования |
1.0 | 3 сен 2008 | Стабильная API, admin-инструменты «отсоединены» от основных, поддержка unicode |
1.1 | 29 июл 2009 | Агрегация (в ORM), транзакционные тесты |
1.2 | 17 май 2010 | Множественные db-коннекты, CSRF , model-валидатор |
1.3 | 23 мар 2011 | Вьюшки на основе классов, поддержка static-файлов |
1.4 LTS | 23 мар 2012 | Поддержка timezone, «in browser» тесты, шаблоны приложений. |
1.5 | 26 фев 2013 | Поддержка Python 3, конфигурируемые user model |
1.6 | 6 ноя 2013 | Управление db-транзакциями, объединение пулов. |
1.7 | 2 сен 2014 | Миграции, загрузка и конфигурация приложений. |
1.8 LTS | 1 апр 2015 | Встроена поддержка нескольких шаблонизаторов. LTS с поддержкой до апреля 2018 |
1.9 | 1 дек 2015 | Автоматическая проверка паролей, новый стиль admin-интерфейса. |
1.10 | 1 авг 2016 | Полнотекстовый поиск для PostgreSQL . Новый стиль middleware |
1.11 LTS | 4 апр 2017 | Последняя версия с поддержкой Python 2.7. LTS с поддержкой до апреля 2020 года |
2.0 | 2 дек 2017 | Первая версия с поддержкой только Python 3, упрощенный синтаксис маршрутизации URL, «админка» с дружественным мобильным интерфейсом. |
2.1 | 1 авг 2018 | Разрешение view для моделей администратора. |
2.2 LTS | апр 2019 | LTS с поддержкой до апреля 2022 года |
3.0 | 2 дек 2019 | Поддержка MariaDB, ASGI |
3.1 | 4 авг 2020 | Асинхронные view и middleware, JSONField для всех поддерживаемых БД |
3.2 LTS | апр 2021 | LTS с поддержкой до апреля 2024 года |
4.0 | дек 2021 | |
4.1 | 3 авг 2022 | Асинхронный интерфейс к ORM |
4.2 LTS | 3 апр 2023 | LTS с поддержкой до апреля 2026 года |
5.0 | дек 2023 | |
Старая версия, не поддерживается
Старая поддерживаемая версия
Текущая версия
Тестовая версия
Будущая версия
|
На базе Django разработан ряд готовых решений со свободной лицензией , среди которых интернет-магазины , системы управления содержимым , а также более узконаправленные проекты.
Django проектировался для работы под управлением Apache с модулем mod python и с использованием PostgreSQL в качестве базы данных.
С включением поддержки WSGI , Django может работать под управлением FastCGI , mod wsgi , или SCGI на Apache и других серверах ( lighttpd , nginx ,…), сервера uWSGI .
В настоящее время, помимо базы данных PostgreSQL , Django может работать с другими СУБД : MySQL , SQLite , Microsoft SQL Server , DB2 , Firebird , SQL Anywhere и Oracle .
В составе Django присутствует собственный веб-сервер для разработки. Сервер автоматически определяет изменения в файлах исходного кода проекта и перезапускается, что ускоряет процесс разработки на Python . Но при этом он работает в однопоточном режиме и пригоден только для процесса разработки и отладки приложения.
Django можно развернуть на PaaS -сервисах RedHat :
Google App Engine Python позволяет использовать для работы любую версию Django.
Существуют некоторые особенности при работе с Django в Google App Engine Python 2.7.
Существует community-версия Django-nonrel , адаптированная для работы с нереляционными хранилищами данных, которая позволяет полноценно (насколько это возможно технически) использовать Django на платформе Google App Engine . А подключаемое приложение django-dbindexer позволяет даже эмулировать JOIN в нереляционных хранилищах данных.