WikiSort.ru - Не сортированное

ПОИСК ПО САЙТУ | о проекте
Django
Тип каркас веб-приложений
Автор
Разработчик Django Software Foundation
Написана на Python[2]
Интерфейс веб-интерфейс
Операционная система кроссплатформенность
Языки интерфейса русский и ещё 66 языков
Первый выпуск 2005[1]
Последняя версия
Состояние активное
Лицензия модифицированная лицензия BSD[d][4][5]
Сайт djangoproject.com
 Django на Викискладе

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 — свободная реализация системы хранения и обмена файлами и др.

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

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

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

Архитектура

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

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

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

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

Возможности

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

  • ORM, API доступа к БД с поддержкой транзакций[14]
  • встроенный интерфейс администратора,[15] с уже имеющимися переводами на многие языки
  • диспетчер URL на основе регулярных выражений[16]
  • расширяемая система шаблонов с тегами и наследованием[17]
  • система кеширования[18]
  • интернационализация[19]
  • подключаемая архитектура приложений, которые можно устанавливать на любые Django-сайты
  • «generic views» — шаблоны функций контроллеров
  • авторизация и аутентификация, подключение внешних модулей аутентификации: LDAP, OpenID и проч.
  • система фильтров («middleware») для построения дополнительных обработчиков запросов, как например включённые в дистрибутив фильтры для кеширования, сжатия, нормализации URL и поддержки анонимных сессий
  • библиотека для работы с формами (наследование, построение форм по существующей модели БД)
  • встроенная автоматическая документация по тегам шаблонов и моделям данных, доступная через административное приложение

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

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

Сравнительные данные по хостингу Django можно узнать на Django-wiki[45]

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

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

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

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

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

Примечания

  1. 1 2 http://www.djangobook.com/en/2.0/chapter01.html#django-s-history
  2. The django Open Source Project on Open Hub: Languages Page — 2006.
  3. Release 2.1.7 — 2019.
  4. https://github.com/django/django/blob/master/LICENSE
  5. The django Open Source Project on Open Hub: Licenses Page — 2006.
  6. What does "Django" mean, and how do you pronounce it?
  7. Django FAQ about MVC in Django
  8. Маниакальный Веблог (Блог Ивана Сагалаева)
  9. What Powers Instagram: Hundreds of Instances, Dozens of Technologies - Instagram Engineering. Проверено 6 января 2013. Архивировано 20 января 2013 года.
  10. Welcome, David Cramer | Disqus: The Official Blog. Проверено 6 января 2013. Архивировано 20 января 2013 года.
  11. The MDN platform (Kuma) | MDN. Проверено 6 января 2013.
  12. Working on Graphite-web
  13. Django FAQ
  14. DjangoBook. Глава 5. Работа с базой данных: Модели
  15. DjangoBook. Глава 6. Интерфейс администратора Django
  16. DjangoBook. Глава 3. Основы динамических страниц
  17. DjangoBook. Глава 10. Расширения для шаблонной системы
  18. DjangoBook. Глава 13. Кэширование
  19. DjangoBook. Глава 18. Интернационализация
  20. "Introducing Django 0.90". Django weblog. Retrieved 2 February 2013.
  21. "Django 0.91 released". Django weblog. Retrieved 2 February 2013.
  22. "Introducing Django 0.95". Django weblog. Retrieved 2 February 2013.
  23. "Announcing Django 0.96!". Django weblog. Retrieved 2 February 2013.
  24. "Django 1.0 released!". Django weblog. Retrieved 2 February 2013.
  25. "Django 1.1 released". Django weblog. Retrieved 2 February 2013.
  26. "Django 1.2 released". Django weblog. Retrieved 2 February 2013.
  27. "Django 1.3 released". Django weblog. Retrieved 2 February 2013.
  28. "Django 1.4 released". Django weblog. Retrieved 2 February 2013.
  29. Django’s release process - Django documentation - Django. Проверено 30 апреля 2016.
  30. "Django 1.5 released" Django weblog. Retrieved 27 February 2013.
  31. "Django 1.6 released" Django weblog. Retrieved 6 November 2013.
  32. "Django 1.7 released" Django weblog. Retrieved 4 September 2014.
  33. "Django 1.8 released" Django weblog. Retrieved 2 April 2015.
  34. "Django 1.9 released" Django weblog. Retrieved 1 December 2015.
  35. "Django 1.10 released" Django weblog. Retrieved 1 August 2016.
  36. " Django weblog. Retrieved 4 April 2017.
  37. 1 2 "Download Django" Download Django. Retrieved 9 December 2016.
  38. Open-Source Django projects
  39. Pricing | OpenShift by Red Hat. Проверено 6 января 2013.
  40. Rapid Python and Django App Deployment to the Cloud with a PaaS
  41. openshift / openshift-diy-py27-django (недоступная ссылка) на github
  42. openshift / django-example на github
  43. Getting Started on Heroku with Python
  44. Deploying an existing Django project on PythonAnywhere
  45. Free Django Hosting Free Python Django Web Hosts List
  46. Google App Engine Python
  47. Third-party Libraries in Python 2.7 - Google App Engine — Google Developers. Проверено 6 января 2013.
  48. Google cloud-sql
  49. Django Support - Google App Engine — Google Developers. Проверено 6 января 2013.
  50. Django-nonrel
  51. django-dbindexer

Литература

Ссылки

Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".

Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.

Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .




Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.ru внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2024
WikiSort.ru - проект по пересортировке и дополнению контента Википедии