Русская Википедия:Django
Django (Джанго, Шаблон:IPA[1]) — свободный фреймворк для веб-приложений на языке Python, использующий шаблон проектирования MVC[2]. Проект поддерживается организацией Django Software Foundation.
Сайт на Django строится из одного или нескольких приложений, которые рекомендуется делать отчуждаемыми и подключаемыми. Это одно из существенных архитектурных отличий этого фреймворка от некоторых других (например, Ruby on Rails). Один из основных принципов фреймворка — DRY (Шаблон:Lang-en)
Также, в отличие от других фреймворков, обработчики URL в Django конфигурируются явно при помощи регулярных выражений.
Для работы с базой данных Django использует собственный ORM, в котором модель данных описывается классами Python, и по ней генерируется схема базы данных.[3]
Использование
Веб-фреймворк Django используется в сайтах Instagram[4], Disqus[5], Mozilla[6], The Washington Times, Pinterest, YouTube, Google и др.
Также Django используется в качестве веб-компонента в проектах:
- Graphite[7] — система построения графиков и наблюдения
- FreeNAS — свободная реализация системы хранения и обмена файлами и др.
Разработчики
- Расселл Кейт-Маги (Шаблон:Lang-en)
- Адриан Головатый (Шаблон:Lang-en),
- Саймон Виллисон (Шаблон:Lang-en),
- Джейкоб Каплан-Мосс (Шаблон:Lang-en),
- Уилсон Майнер (Шаблон:Lang-en)
Разработчики заявляют, что не обязуются строго придерживаться какой бы то ни было методологии в развитии проекта, предпочитая делать то, что кажется им наиболее логичным.[8]
Архитектура
Архитектура Django похожа на «Модель-Представление-Контроллер» (MVC). Контроллер классической модели MVC примерно соответствует уровню, который в Django называется Представление (Шаблон:Lang-en), а презентационная логика Представления реализуется в Django уровнем Шаблонов (Шаблон:Lang-en). Из-за этого уровневую архитектуру Django часто называют «Модель-Шаблон-Представление» (MTV).
Первоначальная разработка Django как средства для работы новостных ресурсов достаточно сильно отразилась на его архитектуре: он предоставляет ряд средств, которые помогают в быстрой разработке веб-сайтов информационного характера. Так, например, разработчику не требуется создавать контроллеры и страницы для административной части сайта, в Django есть встроенное приложение для управления содержимым, которое можно включить в любой сайт, сделанный на Django, и которое может управлять сразу несколькими сайтами на одном сервере. Административное приложение позволяет создавать, изменять и удалять любые объекты наполнения сайта, протоколируя все совершённые действия, и предоставляет интерфейс для управления пользователями и группами (с пообъектным назначением прав).
В дистрибутив Django также включены приложения для системы комментариев, синдикации RSS и Atom, «статических страниц» (которыми можно управлять без необходимости писать контроллеры и представления), перенаправления URL и другое.
Возможности
Некоторые возможности Django:
- ORM, API доступа к БД с поддержкой транзакций[9]
- встроенный интерфейс администратора,[10] с уже имеющимися переводами на многие языки
- диспетчер URL на основе регулярных выражений[11]
- расширяемая система шаблонов с тегами и наследованием[12]
- система кеширования[13]
- интернационализация[14]
- подключаемая архитектура приложений, которые можно устанавливать на любые Django-сайты
- «generic views» — шаблоны функций контроллеров
- авторизация и аутентификация, подключение внешних модулей аутентификации: LDAP, OpenID и проч.
- система фильтров («middleware») для построения дополнительных обработчиков запросов, как например включённые в дистрибутив фильтры для кеширования, сжатия, нормализации URL и поддержки анонимных сессий
- библиотека для работы с формами (наследование, построение форм по существующей модели БД)[15]
- встроенная автоматическая документация по тегам шаблонов и моделям данных, доступная через административное приложение
Некоторые компоненты фреймворка между собой связаны слабо, поэтому их можно достаточно просто заменять на аналогичные. Например, вместо встроенных шаблонов можно использовать Mako или Jinja.
В то же время заменять ряд компонентов (например, ORM) довольно сложно.
Помимо возможностей, встроенных в ядро фреймворка, существуют пакеты, расширяющие его возможности. Возможности, предоставляемые пакетами, а также полный перечень пакетов удобно отслеживать через специальный ресурс — www.djangopackages.com.
Версии и хронология их выхода
Некоторые выпуски Django получают статус «релиза с долгосрочной поддержкой» (LTS)[16]. Они получают обновления по безопасности и по защите от потерь данных на гарантированный период времени, обычно от трёх лет.
Версия | Дата[17] | Примечание |
---|---|---|
scope="row" Шаблон:Version[18] | Шаблон:Dts | |
scope="row" Шаблон:Version[19] | Шаблон:Dts | «new-admin» |
scope="row" Шаблон:Version[20] | Шаблон:Dts | «magic removal» |
scope="row" Шаблон:Version[21] | Шаблон:Dts | «newforms», средства тестирования |
scope="row" Шаблон:Version[22] | Шаблон:Dts | Стабильная API, admin-инструменты «отсоединены» от основных, поддержка unicode |
scope="row" Шаблон:Version[23] | Шаблон:Dts | Агрегация (в ORM), транзакционные тесты |
scope="row" Шаблон:Version[24] | Шаблон:Dts | Множественные db-коннекты, CSRF, model-валидатор |
scope="row" Шаблон:Version[25] | Шаблон:Dts | Вьюшки на основе классов, поддержка static-файлов |
scope="row" Шаблон:Version[26] | Шаблон:Dts | Поддержка timezone, «in browser» тесты, шаблоны приложений. |
scope="row" Шаблон:Version[27] | Шаблон:Dts | Поддержка Python 3, конфигурируемые user model |
scope="row" Шаблон:Version[28] | Шаблон:Dts | Управление db-транзакциями, объединение пулов. |
scope="row" Шаблон:Version[29] | Шаблон:Dts | Миграции, загрузка и конфигурация приложений. |
scope="row" Шаблон:Version[30] | Шаблон:Dts | Встроена поддержка нескольких шаблонизаторов. LTS с поддержкой до апреля 2018 |
scope="row" Шаблон:Version[31] | Шаблон:Dts | Автоматическая проверка паролей, новый стиль admin-интерфейса. |
scope="row" Шаблон:Version[32] | Шаблон:Dts | Полнотекстовый поиск для PostgreSQL. Новый стиль middleware |
scope="row" Шаблон:Version[33] | Шаблон:Dts | Последняя версия с поддержкой Python 2.7. LTS с поддержкой до апреля 2020 года |
scope="row" Шаблон:Version[34] | Шаблон:Dts | Первая версия с поддержкой только Python 3, упрощенный синтаксис маршрутизации URL, «админка» с дружественным мобильным интерфейсом. |
scope="row" Шаблон:Version[35] | Шаблон:Dts | Разрешение view для моделей администратора. |
scope="row" Шаблон:Version[36] | Шаблон:Dts | LTS с поддержкой до апреля 2022 года |
scope="row" Шаблон:Version | Шаблон:Dts | Поддержка MariaDB, ASGI |
scope="row" Шаблон:Version | Шаблон:Dts | Асинхронные view и middleware, JSONField для всех поддерживаемых БД |
scope="row" Шаблон:Version | Шаблон:Dts | LTS с поддержкой до апреля 2024 года |
scope="row" Шаблон:Version | Шаблон:Dts | |
scope="row" Шаблон:Version | Шаблон:Dts | Асинхронный интерфейс к ORM |
scope="row" Шаблон:Version | Шаблон:Dts | LTS с поддержкой до апреля 2026 года |
scope="row" Шаблон:Version | Шаблон:Dts | |
Шаблон:Version |
Решения
На базе Django разработан ряд готовых решений со свободной лицензией[37], среди которых интернет-магазины, системы управления содержимым, а также более узконаправленные проекты.
Конфигурация сервера
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
Django можно развернуть на PaaS-сервисах RedHat:
Django на хостинге Google
Google App Engine Python[44] позволяет использовать для работы любую версию Django.
Существуют некоторые особенности при работе с Django в Google App Engine Python 2.7.
- Django ОRМ несовместим с хранилищем App Engine Datastore, который представляет собой NoSQL хранилище. Это в свою очередь делает ограниченной работу определённых функций фреймворка, в частности, встроенного административного интерфейса[45].
- Также с Django можно работать через Google cloud-sql[46]. Это позволяет использовать все возможности фреймворка, как и при работе с обычными реляционными базами.[47]
Существует community-версия Django-nonrel[48], адаптированная для работы с нереляционными хранилищами данных, которая позволяет полноценно (насколько это возможно технически) использовать Django на платформе Google App Engine. А подключаемое приложение django-dbindexer[49] позволяет даже эмулировать JOIN в нереляционных хранилищах данных.
Примечания
Литература
Ссылки
- Шаблон:Официальный сайт
- Wiki и сообщения об ошибках.Шаблон:Ref-en
- Шаблон:GitHub
- Свободная книга о Django.Шаблон:Ref-en (русский перевод.
- Топ-10 ошибок, которые Django разработчики делают
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web. Django weblog. Retrieved 2 February 2013.
- ↑ Шаблон:Cite web. Django weblog. Retrieved 2 February 2013.
- ↑ Шаблон:Cite web. Django weblog. Retrieved 2 February 2013.
- ↑ Шаблон:Cite web. Django weblog. Retrieved 2 February 2013.
- ↑ Шаблон:Cite web. Django weblog. Retrieved 2 February 2013.
- ↑ Шаблон:Cite web. Django weblog. Retrieved 2 February 2013.
- ↑ Шаблон:Cite web. Django weblog. Retrieved 2 February 2013.
- ↑ Шаблон:Cite web. Django weblog. Retrieved 2 February 2013.
- ↑ Шаблон:Cite web. Django weblog. Retrieved 2 February 2013.
- ↑ Шаблон:Cite web Django weblog. Retrieved 27 February 2013.
- ↑ Шаблон:Cite web Django weblog. Retrieved 6 November 2013.
- ↑ Шаблон:Cite web Django weblog. Retrieved 4 September 2014.
- ↑ Шаблон:Cite web Django weblog. Retrieved 2 April 2015.
- ↑ Шаблон:Cite web Django weblog. Retrieved 1 December 2015.
- ↑ Шаблон:Cite web Django weblog. Retrieved 1 August 2016.
- ↑ Шаблон:Cite web Django weblog. Retrieved 4 April 2017.
- ↑ Шаблон:Cite web Django weblog. Retrieved 3 December 2017.
- ↑ Шаблон:Cite web Django weblog. Retrieved 2 August 2018.
- ↑ Шаблон:Cite web Retrieved 2 August 2018.
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Rapid Python and Django App Deployment to the Cloud with a PaaS
- ↑ Шаблон:Cite web на github
- ↑ Шаблон:Cite web на github
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- Русская Википедия
- Страницы с неработающими файловыми ссылками
- Свободные библиотеки программ
- Свободное программное обеспечение, написанное на Python
- Библиотеки Python
- Веб-фреймворки на Python
- Программное обеспечение с лицензией BSD
- Кроссплатформенное программное обеспечение
- Свободное серверное программное обеспечение
- Программное обеспечение, разработанное в 2003 году
- Страницы, где используется шаблон "Навигационная таблица/Телепорт"
- Страницы с телепортом
- Википедия
- Статья из Википедии
- Статья из Русской Википедии