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-2026
WikiSort.ru - проект по пересортировке и дополнению контента Википедии