Interested Article - Django

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 используется в качестве веб-компонента в проектах:

  • Graphite — система построения графиков и наблюдения
  • FreeNAS — свободная реализация системы хранения и обмена файлами и др.

Разработчики

  • Расселл Кейт-Маги ( англ. Russell Keith-Magee )
  • Адриан Головатый ( англ. ),
  • Саймон Виллисон ( англ. ),
  • Джейкоб Каплан-Мосс ( англ. Jacob Kaplan-Moss ),
  • Уилсон Майнер ( англ. Wilson Miner )

Разработчики заявляют, что не обязуются строго придерживаться какой бы то ни было методологии в развитии проекта, предпочитая делать то, что кажется им наиболее логичным.

Архитектура

Архитектура Django похожа на « Модель-Представление-Контроллер » (MVC). Контроллер классической модели MVC примерно соответствует уровню, который в Django называется Представление ( англ. View ), а презентационная логика Представления реализуется в Django уровнем Шаблонов ( англ. Template ). Из-за этого уровневую архитектуру Django часто называют «Модель-Шаблон-Представление» (MTV).

Первоначальная разработка Django как средства для работы новостных ресурсов достаточно сильно отразилась на его архитектуре: он предоставляет ряд средств, которые помогают в быстрой разработке веб-сайтов информационного характера. Так, например, разработчику не требуется создавать контроллеры и страницы для административной части сайта, в Django есть встроенное приложение для управления содержимым, которое можно включить в любой сайт, сделанный на Django, и которое может управлять сразу несколькими сайтами на одном сервере. Административное приложение позволяет создавать, изменять и удалять любые объекты наполнения сайта, протоколируя все совершённые действия, и предоставляет интерфейс для управления пользователями и группами (с пообъектным назначением прав).

В дистрибутив Django также включены приложения для системы комментариев, синдикации RSS и Atom , «статических страниц» (которыми можно управлять без необходимости писать контроллеры и представления), перенаправления URL и другое.

Джанго также предлагает множество инструментов и утилит, которые облегчают разработку веб-приложений, такие как встроенная система аутентификации и авторизации, обработка форм, валидация данных, механизмы кэширования, миграции баз данных и многое другое.

Система URL-маршрутизации Django позволяет легко определять структуру URL-адресов приложения и их соответствующие обработчики представлений (views), что способствует лучшей организации кода и повышает его читаемость.

Благодаря использованию ORM (Object-Relational Mapping), Django обеспечивает абстракцию от деталей взаимодействия с базой данных, что упрощает работу с данными и делает код более переносимым и поддерживаемым.

Джанго Рейнхардт — музыкант, в честь которого получил название фреймворк

Возможности

Некоторые возможности Django:

  • ORM , API доступа к БД с поддержкой транзакций
  • встроенный интерфейс администратора, с уже имеющимися переводами на многие языки
  • возможность создания кастомных административных панелей с помощью Django Admin Panel Builder.
  • диспетчер URL на основе регулярных выражений
  • расширяемая система шаблонов с тегами и наследованием
  • система кеширования
  • система хеширования
  • интернационализация
  • подключаемая архитектура приложений, которые можно устанавливать на любые Django-сайты
  • «generic views» — шаблоны функций контроллеров
  • авторизация и аутентификация, подключение внешних модулей аутентификации: LDAP , OpenID , OAuth и проч.
  • система фильтров («middleware») для построения дополнительных обработчиков запросов, как например включённые в дистрибутив фильтры для кеширования, сжатия, нормализации URL и поддержки анонимных сессий
  • библиотека для работы с формами (наследование, построение форм по существующей модели БД)
  • встроенная автоматическая документация по тегам шаблонов и моделям данных, доступная через административное приложение
  • интеграция с системами электронной почты ( SMTP ), включая настройку шаблонов электронных писем на разных языках
  • поддержка виртуальных сред (Python virtual environment) для изоляции проектов и их зависимостей.
  • возможность создания RESTful API с помощью Django REST Framework.
  • интеграция с системами хранения файлов, включая , Amazon S3, и другие.
  • встроенная защита от распространенных уязвимостей, таких как и XSS .

Некоторые компоненты фреймворка между собой связаны слабо, поэтому их можно достаточно просто заменять на аналогичные. Например, вместо встроенных шаблонов можно использовать 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

Django можно развернуть на PaaS -сервисах RedHat :

Django на хостинге Google

Google App Engine Python позволяет использовать для работы любую версию Django.

Существуют некоторые особенности при работе с Django в Google App Engine Python 2.7.

  • Django ОRМ несовместим с хранилищем App Engine Datastore, который представляет собой NoSQL хранилище. Это в свою очередь делает ограниченной работу определённых функций фреймворка, в частности, встроенного административного интерфейса .
  • Также с Django можно работать через Google cloud-sql . Это позволяет использовать все возможности фреймворка, как и при работе с обычными реляционными базами.

Существует community-версия Django-nonrel , адаптированная для работы с нереляционными хранилищами данных, которая позволяет полноценно (насколько это возможно технически) использовать Django на платформе Google App Engine . А подключаемое приложение django-dbindexer позволяет даже эмулировать JOIN в нереляционных хранилищах данных.

Примечания

  1. . GitHub . Дата обращения: 8 сентября 2020. 30 апреля 2020 года.
  2. . Дата обращения: 27 марта 2019.
  3. — 2024.
  4. . GitHub . Дата обращения: 8 сентября 2020. 12 февраля 2021 года.
  5. Дата обращения: 14 мая 2009. 10 сентября 2017 года.
  6. . Дата обращения: 14 мая 2009. 10 сентября 2017 года.
  7. . Дата обращения: 27 августа 2020. 30 октября 2020 года.
  8. . Дата обращения: 6 января 2013. 20 января 2013 года.
  9. . Дата обращения: 6 января 2013. 20 января 2013 года.
  10. . Дата обращения: 6 января 2013. Архивировано из 27 января 2013 года.
  11. . Дата обращения: 27 августа 2020. 9 сентября 2020 года.
  12. . Дата обращения: 14 мая 2009. 10 сентября 2017 года.
  13. . Дата обращения: 27 августа 2020. 30 сентября 2020 года.
  14. . Дата обращения: 27 августа 2020. 26 сентября 2020 года.
  15. . Дата обращения: 27 августа 2020. 22 октября 2020 года.
  16. . Дата обращения: 27 августа 2020. 30 сентября 2020 года.
  17. . Дата обращения: 27 августа 2020. 26 сентября 2020 года.
  18. . Дата обращения: 27 августа 2020. 30 сентября 2020 года.
  19. . Дата обращения: 5 октября 2020. 7 октября 2020 года.
  20. (англ.) . www.djangoproject.com . Дата обращения: 4 сентября 2021. 9 октября 2021 года.
  21. (англ.) . www.djangoproject.com . Дата обращения: 4 сентября 2021. 24 октября 2021 года.
  22. . 10 июля 2017 года. . Django weblog. Retrieved 2 February 2013.
  23. . 10 июля 2017 года. . Django weblog. Retrieved 2 February 2013.
  24. . 10 июля 2017 года. . Django weblog. Retrieved 2 February 2013.
  25. 10 июля 2017 года. . Django weblog. Retrieved 2 February 2013.
  26. 10 июля 2017 года. . Django weblog. Retrieved 2 February 2013.
  27. . 10 июля 2017 года. . Django weblog. Retrieved 2 February 2013.
  28. . 10 июля 2017 года. . Django weblog. Retrieved 2 February 2013.
  29. . 10 июля 2017 года. . Django weblog. Retrieved 2 February 2013.
  30. . 9 июня 2017 года. . Django weblog. Retrieved 2 February 2013.
  31. . 10 июля 2017 года. Django weblog. Retrieved 27 February 2013.
  32. . 10 июля 2017 года. Django weblog. Retrieved 6 November 2013.
  33. . 10 июля 2017 года. Django weblog. Retrieved 4 September 2014.
  34. . 10 июля 2017 года. Django weblog. Retrieved 2 April 2015.
  35. . 7 июня 2017 года. Django weblog. Retrieved 1 December 2015.
  36. . 17 июня 2017 года. Django weblog. Retrieved 1 August 2016.
  37. . 10 июня 2017 года. Django weblog. Retrieved 4 April 2017.
  38. . 1 апреля 2019 года. Django weblog. Retrieved 3 December 2017.
  39. . 1 апреля 2019 года. Django weblog. Retrieved 2 August 2018.
  40. . 30 июня 2017 года. Retrieved 2 August 2018.
  41. . Дата обращения: 27 августа 2020. 2 июля 2020 года.
  42. . Дата обращения: 6 января 2013. 23 января 2013 года.
  43. (недоступная ссылка — ) . на github
  44. . 4 августа 2014 года. на github
  45. . Дата обращения: 10 мая 2018. 10 мая 2018 года.
  46. . Дата обращения: 25 апреля 2017. 26 апреля 2017 года.
  47. . Дата обращения: 4 января 2013. 20 января 2013 года.
  48. . Дата обращения: 6 января 2013. 16 января 2013 года.
  49. . Дата обращения: 4 января 2013. 15 января 2013 года.
  50. . Дата обращения: 6 января 2013. 11 августа 2014 года.
  51. (недоступная ссылка — ) .
  52. . Дата обращения: 27 августа 2020. Архивировано из 9 июля 2020 года.

Литература

  • Головатый А., Каплан-Мосс Дж. = Django. The definitive guide to / пер. с англ.. — СПб. : Символ-Плюс, 2010. — 560 с. — (High Tech). — ISBN 978-5-93286-187-5 .
  • У. Чан, П. Биссекс, Д. Форсье. = Python Web Development with Django / пер. с англ. А. Киселёв. — СПб. : Символ-Плюс, 2009. — 456 с. — (High Tech). — ISBN 978-5-93286-167-7 .
  • Дронов В. А. . — СПб. : БХВ-Петербург, 2021. — 704 с. — ISBN 978-5-9775-6691-9 .

Ссылки

  • (англ.) — официальный сайт Django
  • (англ.)
  • на сайте GitHub
  • (англ.) ( .
Источник —

Same as Django