Django | |
---|---|
![]() | |
![]() | |
Тип | каркас веб-приложений |
Автор | |
Разработчик | Django Software Foundation |
Написана на | Python[2] |
Интерфейс | веб-интерфейс |
Операционная система | кроссплатформенность |
Языки интерфейса | русский и ещё 66 языков |
Первый выпуск | 2005[1] |
Последняя версия |
|
Состояние | активное |
Лицензия | модифицированная лицензия BSD[d][4][5] |
Сайт | djangoproject.com |
![]() |
Django (Джанго, ['dʒæŋɡoʊ][6]) — свободный фреймворк для веб-приложений на языке Python, использующий шаблон проектирования MVC[7]. Проект поддерживается организацией Django Software Foundation.
Сайт на Django строится из одного или нескольких приложений, которые рекомендуется делать отчуждаемыми и подключаемыми. Это одно из существенных архитектурных отличий этого фреймворка от некоторых других (например, Ruby on Rails). Один из основных принципов фреймворка — DRY (англ. Don't repeat yourself)
Также, в отличие от других фреймворков, обработчики URL в Django конфигурируются явно при помощи регулярных выражений.
Для работы с базой данных Django использует собственный ORM, в котором модель данных описывается классами Python, и по ней генерируется схема базы данных.[8]
Веб-фреймворк Django используется в таких крупных и известных сайтах, как Instagram[9], Disqus[10], Mozilla[11], The Washington Times, Pinterest, YouTube, Google и др.
Также Django используется в качестве веб-компонента в различных проектах, таких как Graphite[12] — система построения графиков и наблюдения, FreeNAS — свободная реализация системы хранения и обмена файлами и др.
Разработчики заявляют, что не обязуются строго придерживаться какой бы то ни было методологии в развитии проекта, предпочитая делать то, что кажется им наиболее логичным.[13]
Архитектура Django похожа на «Модель-Представление-Контроллер» (MVC). Контроллер классической модели MVC примерно соответствует уровню, который в Django называется Представление (англ. View), а презентационная логика Представления реализуется в Django уровнем Шаблонов (англ. Template). Из-за этого уровневую архитектуру Django часто называют «Модель-Шаблон-Представление» (MTV).
Первоначальная разработка Django как средства для работы новостных ресурсов достаточно сильно отразилась на его архитектуре: он предоставляет ряд средств, которые помогают в быстрой разработке веб-сайтов информационного характера. Так, например, разработчику не требуется создавать контроллеры и страницы для административной части сайта, в Django есть встроенное приложение для управления содержимым, которое можно включить в любой сайт, сделанный на Django, и которое может управлять сразу несколькими сайтами на одном сервере. Административное приложение позволяет создавать, изменять и удалять любые объекты наполнения сайта, протоколируя все совершённые действия, и предоставляет интерфейс для управления пользователями и группами (с пообъектным назначением прав).
В дистрибутив Django также включены приложения для системы комментариев, синдикации RSS и Atom, «статических страниц» (которыми можно управлять без необходимости писать контроллеры и представления), перенаправления URL и другое.
Некоторые возможности Django:
Некоторые компоненты фреймворка между собой связаны слабо, поэтому их можно достаточно просто заменять на аналогичные. Например, вместо встроенных шаблонов можно использовать Mako или Jinja.
В то же время заменять ряд компонентов (например, ORM) довольно сложно.
Помимо возможностей, встроенных в ядро фреймворка, существуют пакеты, расширяющие его возможности. Возможности, предоставляемые пакетами, а также полный перечень пакетов удобно отслеживать через специальный ресурс — www.djangopackages.com.
Обозначения | |
---|---|
Red | Не поддерживается |
Yellow | Продолжает поддерживаться |
Green | Текущая версия |
Blue | Будущие версии |
Версия | Дата | Примечания |
---|---|---|
0.90[20] | 16 ноя 2005 | |
0.91[21] | 11 янв 2006 | "new-admin" |
0.95[22] | 29 июл 2006 | "magic removal" |
0.96[23] | 23 мар 2007 | "newforms", средства тестирования |
1.0[24] | 3 сен 2008 | стабильная API, admin-инструменты "отсоединены" от основных, поддержка unicode |
1.1[25] | 29 июл 2009 | Агрегация (в ORM), транзакционные тесты |
1.2[26] | 17 май 2010 | Множественные db-коннекты, CSRF, model-валидатор |
1.3[27] | 23 мар 2011 | Вьюшки на основе классов, поддержка static-файлов |
1.4[28] | 23 мар 2012 | Поддержка timezone, "in browser" тесты, шаблоны приложений. LTS-версия[29] |
1.5[30] | 26 фев 2013 | Поддержка Python 3, конфигурируемые user model |
1.6[31] | 6 ноя 2013 | Управление db-транзакциями, объединение пулов. |
1.7[32] | 2 сен 2014 | Миграции, загрузка и конфигурация приложений. |
1.8[33] | 1 апр 2015 | Встроена поддержка нескольких шаблонизаторов. LTS с поддержкой до апреля 2018 |
1.9[34] | 1 дек 2015 | Автоматическая проверка паролей, новый стиль admin-интерфейса. |
1.10[35] | 1 авг 2016 | Полнотекстовый поиск для PostgreSQL. Новый стиль middleware. |
1.11[36] | 4 апр 2017 | Последняя версия с поддержкой Python 2.7. LTS с поддержкой до апреля 2020 |
2.0[37] | дек 2017 | Первая версия с поддержкой только Python 3. |
2.1[37] | авг 2018 | Текущая версия 2.1.7 |
2.2 LTS | апр 2019 |
На базе Django разработан ряд готовых решений со свободной лицензией[38], среди которых интернет-магазины, системы управления содержимым, а также более узконаправленные проекты.
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:
Сравнительные данные по хостингу Django можно узнать на Django-wiki[45]
Google App Engine Python[46] позволяет использовать для работы любую версию Django.
Существуют некоторые особенности при работе с Django в Google App Engine Python 2.7.
Существует community-версия Django-nonrel[50], адаптированная для работы с нереляционными хранилищами данных, которая позволяет полноценно (насколько это возможно технически) использовать Django на платформе Google App Engine. А подключаемое приложение django-dbindexer[51] позволяет даже эмулировать JOIN в нереляционных хранилищах данных.
![]() |
Django в Викиучебнике |
---|---|
![]() |
Django на Викискладе |
Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".
Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.
Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .