Оригинальный автор(ы) | Адриан Головатый , Саймон Уиллисон | ||
---|---|---|---|
Разработчик(и) | Фонд программного обеспечения Django [1] | ||
Первоначальный выпуск | 21 июля 2005 г. ( 2005-07-21 ) | [2]||
Стабильный релиз |
| ||
Репозиторий |
| ||
Написано в | Питон [1] | ||
Размер | 8,9 МБ [4] | ||
Тип | Веб-фреймворк [1] | ||
Лицензия | 3-пунктный BSD [5] | ||
Веб-сайт | www.djangoproject.com |
Django ( / ˈ dʒ æ ŋ ɡ oʊ / JANG -goh ; иногда стилизуется как django ) [6] — это бесплатный веб-фреймворк с открытым исходным кодом , работающий на Python и работающий на веб-сервере. Он следует архитектурному шаблону «модель–шаблон–представления» (MTV) . [7] [8] Он поддерживается Django Software Foundation (DSF), независимой организацией, созданной в США как некоммерческая организация 501(c)(3) .
Основная цель Django — облегчить создание сложных веб-сайтов, управляемых базами данных. Фреймворк делает упор на повторное использование и «подключаемость» компонентов, меньше кода, низкую связанность, быструю разработку и принцип « не повторяйся» . [9] Python используется повсюду, даже для настроек, файлов и моделей данных . Django также предоставляет дополнительный административный интерфейс создания, чтения, обновления и удаления , который динамически генерируется посредством интроспекции и настраивается посредством моделей администратора.
Некоторые известные сайты, использующие Django, включают Instagram , [10] Mozilla , [11] Disqus , [12] Bitbucket , [13] Nextdoor , [14] и Clubhouse . [15]
Django был создан осенью 2003 года, когда веб-программисты газеты Lawrence Journal-World Адриан Головатый и Саймон Уиллисон начали использовать Python для создания приложений. Якоб Каплан-Мосс был нанят на раннем этапе разработки Django, незадолго до окончания стажировки Уиллисона. [16] Он был выпущен публично под лицензией BSD в июле 2005 года. Фреймворк был назван в честь гитариста Джанго Рейнхардта . [17] Головатый — цыганский джазовый гитарист, вдохновлённый отчасти музыкой Рейнхардта. [18]
В июне 2008 года было объявлено, что недавно созданная организация Django Software Foundation (DSF) будет поддерживать Django в будущем. [19]
Несмотря на наличие собственной номенклатуры, например, именование вызываемых объектов, генерирующих HTTP- ответы, «представлениями» [7] , ядро фреймворка Django можно рассматривать как архитектуру MVC . [8] Оно состоит из объектно-реляционного преобразователя (ORM), который выступает посредником между моделями данных (определяемыми как классы Python) и реляционной базой данных (« Модель »), системы обработки HTTP-запросов с системой веб-шаблонов (« Вид ») и диспетчера URL на основе регулярных выражений (« Контроллер »).
В базовую структуру также включены:
Основной дистрибутив Django также объединяет ряд приложений в своем пакете «contrib», в том числе:
Система конфигурации Django позволяет подключать сторонний код к обычному проекту, при условии, что он соответствует соглашениям о повторно используемых приложениях [22] . Для расширения исходного поведения фреймворка доступно более 5000 пакетов [23] , предоставляющих решения для проблем, которые не решал исходный инструмент: регистрация, поиск, предоставление и использование API , CMS и т. д.
Однако эта расширяемость смягчается зависимостями внутренних компонентов. Хотя философия Django подразумевает слабую связанность, [24] фильтры шаблонов и теги предполагают реализацию одного движка, а как auth, так и admin bundled applications требуют использования внутреннего ORM . Ни один из этих фильтров или bundled apps не является обязательным для запуска проекта Django, но повторно используемые приложения, как правило, зависят от них, побуждая разработчиков продолжать использовать официальный стек, чтобы в полной мере воспользоваться экосистемой приложений.
Django может работать совместно с Apache , Nginx с использованием WSGI , Gunicorn или Cherokee с использованием flup (модуль Python). [25] [26] Django также включает возможность запуска сервера FastCGI , что позволяет использовать его за любым веб-сервером, поддерживающим FastCGI, например Lighttpd или Hiawatha . Также возможно использовать другие веб-серверы, совместимые с WSGI . [27] Django официально поддерживает пять бэкэндов баз данных: PostgreSQL , MySQL , MariaDB , SQLite и Oracle . [28] Microsoft SQL Server можно использовать с django-mssql, в то время как аналогичные внешние бэкэнды существуют для IBM Db2 , [29] SQL Anywhere [30] и Firebird . [31] Существует ответвление под названием django-nonrel, которое поддерживает базы данных NoSQL , например MongoDB и Google App Engine Datastore. [32]
Django также может быть запущен совместно с Python на любом сервере приложений Java EE, таком как GlassFish или JBoss . В этом случае необходимо установить django-jython, чтобы предоставить драйверы JDBC для подключения к базе данных, которые также могут предоставить функциональность для компиляции Django в .war, подходящий для развертывания. [33]
Команда Django время от времени будет обозначать определенные релизы как релизы с «долгосрочной поддержкой» (LTS). [34] В релизах LTS будут применяться исправления безопасности и потери данных в течение гарантированного периода времени, обычно 3+ года, независимо от темпов последующих релизов.
Версия | Дата выпуска [35] | Окончание основной поддержки | Окончание расширенной поддержки | Примечания [36] |
---|---|---|---|---|
Старая версия, больше не поддерживается:0,90 [37] | 16 ноября 2005 г. | |||
Старая версия, больше не поддерживается:0,91 [38] | 11 января 2006 г. | "новый-админ" | ||
Старая версия, больше не поддерживается:0,95 [39] | 29 июля 2006 г. | "магическое удаление" | ||
Старая версия, больше не поддерживается:0,96 [40] | 23 марта 2007 г. | "newforms", инструменты тестирования | ||
Старая версия, больше не поддерживается:1.0 [41] | 3 сентября 2008 г. | Стабильность API, раздельное администрирование, юникод | ||
Старая версия, больше не поддерживается:1.1 [42] | 29 июля 2009 г. | Агрегаты, тесты на основе транзакций | ||
Старая версия, больше не поддерживается:1.2 [43] | 17 мая 2010 г. | Несколько подключений к БД, CSRF , проверка модели | ||
Старая версия, больше не поддерживается:1.3 [44] | 23 марта 2011 г. | 23 марта 2012 г. | 26 февр. 2013 г. | Представления на основе классов, статические файлы |
Старая версия, больше не поддерживается:1.4 ДТС [45] | 23 марта 2012 г. | 26 февр. 2013 г. | 1 окт. 2015 г. | Часовые пояса, тестирование браузеров, шаблоны приложений. |
Старая версия, больше не поддерживается:1.5 [46] | 26 февр. 2013 г. | 6 ноября 2013 г. | 2 сен 2014 | Поддержка Python 3, настраиваемая модель пользователя |
Старая версия, больше не поддерживается:1.6 [47] | 6 ноября 2013 г. | 2 сен 2014 | 1 апреля 2015 г. | Посвящается Малкольму Трединнику, менеджеру по управлению транзакциями в базе данных, пулу соединений. |
Старая версия, больше не поддерживается:1.7 [48] | 2 сен 2014 | 1 апреля 2015 г. | 1 декабря 2015 г. | Миграции, загрузка и настройка приложений. |
Старая версия, больше не поддерживается:1.8 ДТС [49] | 1 апреля 2015 г. | 1 декабря 2015 г. | 1 апреля 2018 г. | Собственная поддержка нескольких шаблонизаторов. Поддержка прекращена 1 апреля 2018 г. |
Старая версия, больше не поддерживается:1.9 [50] | 1 декабря 2015 г. | 1 авг. 2016 г. | 4 апреля 2017 г. | Автоматическая проверка пароля. Новый стиль для интерфейса администратора. |
Старая версия, больше не поддерживается:1.10 [51] | 1 авг. 2016 г. | 4 апреля 2017 г. | 2 декабря 2017 г. | Полнотекстовый поиск для PostgreSQL. Новое промежуточное ПО. |
Старая версия, больше не поддерживается:1.11 ДТС [52] | 4 апреля 2017 г. | 2 декабря 2017 г. | 1 апреля 2020 г. | Последняя версия с поддержкой Python 2.7. Поддержка прекращена 1 апреля 2020 г. |
Старая версия, больше не поддерживается:2.0 [53] | 2 декабря 2017 г. | 1 авг. 2018 г. | 1 апреля 2019 г. | Первый релиз только для Python 3, упрощенный синтаксис маршрутизации URL, удобное для мобильных устройств администрирование. |
Старая версия, больше не поддерживается:2.1 [54] | 1 авг. 2018 г. | 1 апреля 2019 г. | 2 декабря 2019 г. | Разрешение на просмотр модели. |
Старая версия, больше не поддерживается:2.2 ДТС [55] | 1 апреля 2019 г. | 2 декабря 2019 г. | 11 апреля 2022 г. | Выпуск по безопасности. |
Старая версия, больше не поддерживается:3.0 [56] | 2 декабря 2019 г. | 3 авг. 2020 г. | 6 апреля 2020 г. | Поддержка ASGI |
Старая версия, больше не поддерживается:3.1 [57] | 4 авг. 2020 г. | 6 апреля 2020 г. | 7 дек. 2021 г. | Асинхронные представления и промежуточное ПО |
Старая версия, больше не поддерживается:3.2 ДТС [58] | 6 апреля 2021 г. | 7 дек. 2021 г. | Апрель 2024 г. | Отслеживание связей «многие ко многим», добавлена поддержка Python 3.11 |
Старая версия, больше не поддерживается:4.0 [59] | 7 дек. 2021 г. | 3 авг. 2022 г. | Апрель 2023 г. | Поддержка pytz в настоящее время устарела и будет удалена в Django 5.0. |
Старая версия, больше не поддерживается:4.1 [60] | 3 авг. 2022 г. | Апрель 2023 г. | Декабрь 2023 г. | Асинхронный интерфейс ORM, CSRF_COOKIE_MASKED настройка, вывод формы, типа{{ form }} |
Старая версия, которая все еще поддерживается:4.2 ДТС [61] | 3 апреля 2023 г. | Декабрь 2023 г. | Апрель 2026 г. | Поддержка Psycopg 3, ENGINE так как django.db.backends.postgresql поддерживает обе библиотеки. |
Старая версия, которая все еще поддерживается:5.0 [62] | 4 дек 2023 | Август 2024 г. | Апрель 2025 г. | Фильтры фасетов в админке, упрощенные шаблоны для отображения полей формы |
Последняя версия: 5.1 [63] | 7 авг. 2024 г. | Апрель 2025 г. | Декабрь 2025 г. | Добавлена поддержка Python 3.13. Добавлена поддержка пулов соединений PostgreSQL. |
Легенда: Неподдерживаемая версия Старая версия, все еще поддерживается Последняя версия Последняя предварительная версия Будущий релиз |
Существует полугодовая конференция для разработчиков и пользователей Django, называемая «DjangoCon», которая проводится с сентября 2008 года. DjangoCon проводится ежегодно в Европе, в мае или июне; [64] а еще одна проводится в Соединенных Штатах в августе или сентябре, в разных городах. [65] DjangoCon 2012 года прошел в Вашингтоне, округ Колумбия, с 3 по 8 сентября. DjangoCon 2013 года прошел в Чикаго в отеле Hyatt Regency, а спринты после конференции проводились в Digital Bootcamp, центре компьютерной подготовки. [66] DjangoCon US 2014 года вернулся в Портленд , штат Орегон, с 30 августа по 6 сентября. DjangoCon US 2015 года прошел в Остине , штат Техас, с 6 по 11 сентября в AT&T Executive Center. DjangoCon US 2016 года прошёл в Филадельфии, штат Пенсильвания, в школе Уортона Пенсильванского университета с 17 по 22 июля. [67] DjangoCon US 2017 года прошёл в Спокане, штат Вашингтон; [68] в 2018 году DjangoCon US прошёл в Сан-Диего, штат Калифорния. [69] DjangoCon US 2019 года снова прошёл в Сан-Диего, штат Калифорния, с 22 по 27 сентября. DjangoCon 2021 года прошёл виртуально, а в 2022 году DjangoCon US вернулся в Сан-Диего с 16 по 21 октября. DjangoCon US 2023 прошёл с 16 по 20 октября в конференц-центре Дарема , штат Северная Каролина, а DjangoCon US 2024 должен вернуться в Дарем с 22 по 27 сентября. [70] [71]
Мини-конференции Django обычно проводятся каждый год в рамках Австралийской конференции Python «PyCon AU». [72] Ранее эти мини-конференции проводились в:
Django породил группы пользователей и встречи по всему миру, наиболее заметной группой является организация Django Girls , которая зародилась в Польше, но теперь проводит мероприятия в 91 стране. [73] [74] [75]
Программисты перенесли дизайн шаблонизатора Django с Python на другие языки, обеспечив пристойную кроссплатформенную поддержку. Некоторые из этих вариантов являются более прямыми портами; другие, хотя и вдохновлены Django и сохраняют его концепции, позволяют себе отклоняться от дизайна Django:
Django как фреймворк способен построить полноценную CMS , однако существуют специализированные проекты CMS, которые построены на основе фреймворка Django и расширяют его. Ниже приведен список некоторых наиболее популярных CMS на основе Django:
достаточно точно следует этому шаблону MVC, чтобы его можно было назвать фреймворком MVC