Django (бел.: Джа́нга) — свабодны фрэймворк для вэб-праграм на мове Python, які выкарыстоўвае шаблон праектавання MVC[6]. Праект падтрымліваецца арганізацыяй Django Software Foundation.

Django
Выява лагатыпа
Тып Вэб-фрэймворк
Аўтар Lawrence Journal-World[d][1]
Распрацоўшчык Django Software Foundation[d]
Напісана на Python[3]
Інтэрфейс вэб-інтэрфейс[d]
Аперацыйная сістэма кросплатформавае праграмнае забеспячэнне
Першы выпуск 2004[1]
Апошняя версія
  • 5.1.3 (5 лістапада 2024)[2]
Ліцэнзія мадыфікаваная ліцэнзія BSD[d][4][5]
Сайт djangoproject.com (англ.)
Лагатып Вікісховішча Медыяфайлы на Вікісховішчы

Старонка на Django будуецца з аднай або некалькіх праграм. Адзін з асноўных прынцыпаў фрэймворка - DRY (англ.: Don't repeat yourself).

Таксама, у адрозненні ад іншых фрэймворкаў, апрацоўшчыкі URL у Django канфігуруюцца яўна пры дапамозе рэгулярных выразаў.

Для працы з базай даных Django выкарыстоўвае ўласную ORM, у якой мадэль даных апісваецца класамі Python, і па ёй ужо генеруецца схема базы даных[7].

Выкарыстанне

правіць

Вэб-фрэймворк Django выкарыстоўваецца на старонках Instagram [8], Disqus[9], Mozilla[10], The Washington Times, Pinterest, YouTube, Google і інш.

Таксама Django выкарыстоўваецца ў якасці вэб-кампанента ў праектах:

  • Graphite [11] — сістэма пабудовы графікаў і назірання
  • FreeNAS — свабодная рэалізацыя сістэмы захоўвання і абмену файламі і інш.

Распрацоўшчыкі

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

Распрацоўшчыкі заяўляюць, што не абавязваюцца строга прытрымлівацца ніякай метадалогіі ў развіцці праекта, аддаючы перавагу таму, што здаецца ім найболей лагічным[12].

Магчымасці

правіць

Некаторыя магчымасці Django:

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

Некаторыя кампаненты фрэймворка паміж сабой злучаны слаба, таму іх можна досыць проста замяняць на аналагічныя. Напрыклад, замест убудаваных шаблонаў можна выкарыстоўваць Mako ці Jinja .

У той жа час замяняць шэраг кампанентаў (напрыклад, ORM) даволі складана.

Акрамя магчымасцяў убудаваных у ядро фреймворка, існуюць пакеты, якія пашыраюць яго магчымасці. Магчымасці, якія прадстаўляюцца пакетамі, а таксама поўны пералік пакетаў зручна адсочваць праз спецыяльны рэсурс - www.djangopackages.com .

 
Джанга Рэйнхардт — музыка, у гонар якога фрэймворк атрымаў сваю назву

Версіі і храналогія іх выхаду

правіць

Некаторыя выпускі Django атрымліваюць статус "рэлізу з доўгатэрміновай падтрымкай" (LTS)[20]. Яны атрымліваюць абнаўленні бяспецы і абароны ад страт даных на гарантаваны перыяд часу, звычайна ад трох гадоў.

Рашэнні

правіць

На базе Django распрацаваны шэраг гатовых рашэнняў са свабоднай ліцэнзіяй[21], сярод якіх інтэрнэт-крамы, сістэмы кіравання змесцівам, а таксама больш вузканакіраваныя праекты.

Канфігурацыя сервера

правіць

Django праектаваўся для працы пад кіраваннем Apache з модулем mod python і з выкарыстаннем PostgreSQL у якасці базы даных.

З уключэннем падтрымкі WSGI, Django можа працаваць пад кіраваннем FastCGI, mod wsgi або SCGI на Apache і іншых серверах.

Зараз акрамя базы даных PostgreSQL, Django можа працаваць з іншымі СКБД: MySQL, SQLite, Microsoft SQL Server, DB2, Firebird, SQL Anywhere і Oracle .

У складзе Django прысутнічае ўласны вэб-сервер для распрацоўкі. Сервер аўтаматычна вызначае змены ў файлах зыходнага кода праектп і перазапускаецца, што паскарае працэс распрацоўкі на Python. Але пры гэтым ён працуе ў аднапаточным рэжыме і прыдатны толькі для працэсу распрацоўкі і адладкі праграмы.

Хостынг для Django

правіць

Django можна разгарнуць на PaaS-сэрвісах RedHat:

Django на хостынгу Google

правіць

Google App Engine Python[28] дазваляе выкарыстоўваць для працы любую версію Django.

Існуюць некаторыя асаблівасці пры працы з Django у Google App Engine Python 2.7.

  • Django ORM несумяшчальна са сховішчам App Engine Datastore, якое ўяўляе сабой NoSQL сховішча. Гэта ў сваю чаргу робіць абмежаванай працу пэўных функцый фрэймворка, у прыватнасці, убудаванага адміністрацыйнага інтэрфейсу[29].
  • Таксама з Django можна працаваць праз Google cloud-sql[30]. Гэта дазваляе выкарыстоўваць усе магчымасці фрэймворка, як і пры працы са звычайнымі рэляцыйнымі базамі[31].

Існуе community-версія Django-nonrel[32], адаптаваная для працы з нерэляцыйнымі сховішчамі даных, якая дазваляе паўнавартасна (наколькі гэта магчыма тэхнічна) выкарыстоўваць Django на платформе Google App Engine. А падключальная праграма django-dbindexer[33] дазваляе нават эмуляваць JOIN у нерэляцыйных сховішчах даных.

Зноскі

  1. а б http://www.djangobook.com/en/2.0/chapter01.html#django-s-history
  2. Release 5.1.3 — 2024. Праверана 13 лістапада 2024.
  3. The django Open Source Project on Open Hub: Languages Page — 2006. Праверана 18 ліпеня 2018.
  4. https://github.com/django/django/blob/master/LICENSE Праверана 2 верасня 2016.
  5. The django Open Source Project on Open Hub: Licenses Page — 2006. Праверана 18 ліпеня 2018.
  6. Django FAQ about MVC in Django. Архівавана з першакрыніцы 10 верасня 2017. Праверана 14 мая 2009.
  7. Маниакальный Веблог (Блог Ивана Сагалаева). Архівавана з першакрыніцы 30 кастрычніка 2020. Праверана 27 жніўня 2020.
  8. What Powers Instagram: Hundreds of Instances, Dozens of Technologies - Instagram Engineering. Архівавана з першакрыніцы 20 студзеня 2013. Праверана 6 студзеня 2013.
  9. Welcome, David Cramer | Disqus: The Official Blog. Архівавана з першакрыніцы 20 студзеня 2013. Праверана 6 студзеня 2013.
  10. The MDN platform (Kuma) | MDN(недаступная спасылка). Архівавана з першакрыніцы 27 студзеня 2013. Праверана 6 студзеня 2013.
  11. Working on Graphite-web. Архівавана з першакрыніцы 9 верасня 2020. Праверана 27 жніўня 2020.
  12. Django FAQ. Архівавана з першакрыніцы 10 верасня 2017. Праверана 14 мая 2009.
  13. DjangoBook. Глава 5. Работа с базой данных: Модели. Архівавана з першакрыніцы 30 верасня 2020. Праверана 27 жніўня 2020.
  14. DjangoBook. Глава 6. Интерфейс администратора Django. Архівавана з першакрыніцы 26 верасня 2020. Праверана 27 жніўня 2020.
  15. DjangoBook. Глава 3. Основы динамических страниц. Архівавана з першакрыніцы 22 кастрычніка 2020. Праверана 27 жніўня 2020.
  16. DjangoBook. Глава 10. Расширения для шаблонной системы. Архівавана з першакрыніцы 30 верасня 2020. Праверана 27 жніўня 2020.
  17. DjangoBook. Глава 13. Кэширование. Архівавана з першакрыніцы 26 верасня 2020. Праверана 27 жніўня 2020.
  18. DjangoBook. Глава 18. Интернационализация. Архівавана з першакрыніцы 30 верасня 2020. Праверана 27 жніўня 2020.
  19. Djangodoc.ru. Использование форм. Архівавана з першакрыніцы 7 кастрычніка 2020. Праверана 5 кастрычніка 2020.
  20. Django’s release process | Django documentation | Django (англ.). www.djangoproject.com. Архівавана з першакрыніцы 9 кастрычніка 2021. Праверана 4 верасня 2021.
  21. Open-Source Django projects. Архівавана з першакрыніцы 2 ліпеня 2020. Праверана 27 жніўня 2020.
  22. Pricing | OpenShift by Red Hat. Архівавана з першакрыніцы 23 студзеня 2013. Праверана 6 студзеня 2013.
  23. Rapid Python and Django App Deployment to the Cloud with a PaaS
  24. openshift / openshift-diy-py27-django(недаступная спасылка). на github
  25. openshift / django-example. Архівавана з першакрыніцы 4 жніўня 2014. на github
  26. Getting Started on Heroku with Python. Архівавана з першакрыніцы 10 мая 2018. Праверана 10 мая 2018.
  27. Deploying an existing Django project on PythonAnywhere. Архівавана з першакрыніцы 26 красавіка 2017. Праверана 25 красавіка 2017.
  28. Google App Engine Python. Архівавана з першакрыніцы 20 студзеня 2013. Праверана 4 студзеня 2013.
  29. Third-party Libraries in Python 2.7 - Google App Engine — Google Developers. Архівавана з першакрыніцы 16 студзеня 2013. Праверана 6 студзеня 2013.
  30. Google cloud-sql. Архівавана з першакрыніцы 15 студзеня 2013. Праверана 4 студзеня 2013.
  31. Django Support - Google App Engine — Google Developers. Архівавана з першакрыніцы 11 жніўня 2014. Праверана 6 студзеня 2013.
  32. Django-nonrel(недаступная спасылка).
  33. django-dbindexer(недаступная спасылка). Архівавана з першакрыніцы 9 ліпеня 2020. Праверана 27 жніўня 2020.