Django
![]() | |
![]() | |
Тип | веб-фреймворк[1] ![]() |
---|---|
Автор | Lawrence Journal-Worldd[2] ![]() |
Розробник | Django Software Foundationd ![]() |
Стабільний випуск | 5.1.4 (4 грудня 2024 ) |
Операційна система | кросплатформова програма ![]() |
GNU фреймворк | Веб-інтерфейс ![]() |
Мова програмування | Python[3] ![]() |
Доступні мови | українська та ще 66 мов |
Ліцензія | модифікована ліцензія BSDd[4][5] ![]() |
Репозиторій | github.com/django/django |
Вебсайт | djangoproject.com ![]() |
Django (укр. Джанго) — високорівневий відкритий Python-фреймворк (програмний каркас) для розробки вебсистем. Названо його було на честь джазмена Джанго Рейнхардта (відповідно до музичних смаків одного зі засновників проєкту).
Сайт на Django будується з однієї або декількох частин, які рекомендується робити модульними. Це одна з істотних архітектурних відмінностей цього фреймворку від деяких інших (наприклад Ruby on Rails).
Архітектура Django подібна на «Модель-Вигляд-Контролер» (MVC). Однак, те що називається «контролером» в класичній моделі MVC, в Django називається «вигляд» (англ. view), а те, що мало б бути «виглядом», називається «шаблон» (англ. template). Таким чином, MVC розробники Django називають MTV («Модель-Шаблон-Вигляд»).
Початкова розробка Django, як засобу для роботи новинних ресурсів, досить сильно позначилася на його архітектурі: він надає ряд засобів, які допомагають у швидкій розробці вебсайтів інформаційного характеру. Так, наприклад, розробнику не потрібно створювати контролери та сторінки для адміністративної частини сайту, в Django є вбудований модуль для керування вмістом, який можна включити в будь-який сайт, зроблений на Django, і який може керувати відразу декількома сайтами на одному сервері. Адміністративний модуль дозволяє створювати, змінювати і вилучати будь-які об'єкти наповнення сайту, протоколюючі всі дії, а також надає інтерфейс для управління користувачами і групами (з призначенням прав).
У дистрибутив Django також включені програми для системи коментарів, синдикації RSS і Atom, «статичних сторінок»(якими можна управляти без необхідності писати контролери та відображення), перенаправлення URL та інше.
Django був створений для управління сайтами новин LJWorld.com [Архівовано 1 грудня 2008 у Wayback Machine.], lawrence.com [Архівовано 16 грудня 2008 у Wayback Machine.] і KUsports.com [Архівовано 2 грудня 2008 у Wayback Machine.] компанії The World Company (Лоренс (Канзас), США), але з моменту початку розповсюдження його у статусі відкритого програмного забезпечення отримав величезну популярність в усьому світі як платформа до численних систем.
Розробники — засновники проєкту:
- Адріан Головатий[en]
- Саймон Віллісон (англ. Simon Willison),
- Джекоб Каплан-Мосс (англ. Jacob Kaplan-Moss),
- Вілсон Майнер (англ. Wilson Miner)
- Pinax фреймворк пропонує аплікації багаторазового застосування, спрямовані на Django сайти соціальних мереж.
- RapidSMS є основою для SMS аплікації побудованої на Django.
- Pootle являє собою інтернет-інструмент управління перекладом.
- Review Board являє собою вебінструмент спільної перевірки коду.
- Reitveld це ще один вебінструмент перевірки коду. Він був спочатку написаний як зразок для використання Django з Google App Engine [1] [Архівовано 18 квітня 2010 у Wayback Machine.].
Деякі можливості Django:
- ORM, API доступу до БД з підтримкою транзакцій[6]
- вбудований інтерфейс адміністратора,[7] з уже наявними перекладами на більшість мов
- диспетчер URL на основі регулярних виразів[8]
- розширювана система шаблонів з тегами та наслідуванням[9]
- система кешування[10]
- інтернаціоналізація[11][12]
- архітектура застосунків, що підключаються, які можна встановлювати на будь-які Django-сайти
- «generic views» — шаблони функцій контролерів
- авторизація та аутентифікація, підключення зовнішніх модулів аутентифікації: LDAP, OpenID та ін.
- система фільтрів («middleware») для побудови додаткових обробників запитів, наприклад включені в дистрибутив фільтри для кешування, стиснення, нормалізації URL і підтримки анонімних сесій
- бібліотека для роботи з формами (наслідування, побудова форм за існуючою моделлю БД)
- вбудована автоматична документація по тегам шаблонів та моделям даних, доступна через адміністративний застосунок
Різні компоненти фреймворку між собою пов'язані слабо, тому достатньо будь-яку частину замінити на аналогічну. Наприклад, замість вбудованих шаблонів можна використовувати Mako [Архівовано 11 квітня 2022 у Wayback Machine.] або Jinja.
Django підтримує парадигму ООП. Об'єкти БД в термінології Django іменуються «моделями». Фреймворк надає у розпорядження розробникові розвинутий прикладний програмний інтерфейс для високорівневого доступу до даних. В більшості випадків немає потреби писати SQL-запити (однак, ніхто не забороняє це робити).
Для прикладу, для проєкту обліку учнів можна створити таку модель:
class Student(models.Model): name = models.CharField("Ім'я", max_length="100") surname = models.CharField("Прізвище", max_length="100") birth_date = models.DateField()
При виконанні синхронізації проєкту з БД автоматично буде створена таблиця БД з полями, які відповідають полям (properties) моделі.
Вибірка всіх студентів:
students = Student.objects.all()
Вибірка з фільтром по прізвищу, по частині прізвища, по даті народження:
students = Student.objects.filter(surname="Іванов") students = Student.objects.filter(surname__iexact="нов") # LIKE-фільтр students = Student.objects.filter(birth_date__gte=datetime.date('1982', '4', '5')) #старші за дану дату
Django автоматично створить для вас CRUD-інтерфейс ('адмінку').
Парсинг URL-ів побудований на регулярних виразах. Розробник не обмежений у використанні певної схеми посилань.
В Django є окрема мова для опису шаблонів. Вона є дуже простою і «дружньою» для непрограмістів. В ній присутні оператори циклу, умови, форматування даних. З практики: верстальщика можна навчити редагувати Django-шаблони за 2-3 заняття.
Мова шаблонів виконує функцію відображення даних. Змінити дані в БД її операторами неможливо.
Django-проєкт може бути налаштований на роботу з Memcached чи будь-яким іншим фреймворком за лічені хвилини. Інструменти Django дозволяють кешувати SQL-вибірки, шаблони та їх частини і просто окремі змінні.
Переклад Django-проєкту не є проблемою. Інтернаціоналізація базується на концепції «лінивого» перекладу. Це зокрема означає, що якщо певний рядок тексту не має перекладу, то буде використано базовий текст і не буде показано повідомлення про помилку. Проте ніхто не забороняє використовувати функції, які будуть контролювати наявність перекладу ря��кових даних.
Для перекладу тексту всередині програмного коду використовується функція ugettext, яка часто імпортується як «_»
from django.utils.translation import ugettext as _
Її можна однаково вільно використовувати в тілі процедур і в полях класів.
class Item(models.Model): category = models.ForeignKey(Category, verbose_name=_("Category"))
...
def do_something(): print _("Hello!") t = "Variable string" print _(t)
Для перекладу тексту всередині шаблонів використовується бібліотека шаблонних тегів i18n.
{% load i18n %} ...
Django проєктувався для роботи під управлінням вебсервера Apache з модулем mod python і використанням PostgreSQL як бази даних.
На даний час Django також підтримує FastCGI, mod wsgi або SCGI. Вебсервером може бути Apache, lighttpd, nginx, CherryPy. Підтримувані системи баз даних — MySQL, SQLite, PostgreSQL і Oracle[13].
У складі Django присутній власний вебсервер для розробки і налагоджування. Сервер автоматично відслідковує зміни у файлах сирцевого коду і перезапускається, що зручно при розробці проєкту.
- липень 2009: Apress випустило другу редакцію книги The Definitive Guide to Django, для версії 1.1, за ліцензією GNU Free Document License (перша редакція вийшла у грудні 2007.)[14]
- червень 2009: Apress випустило другу редакцію книги Practical Django Projects by James Bennett (перша редакція вийшла у червні 2008.)[15]
- березень 2009: Packt Publishing [Архівовано 15 вересня 2010 у Wayback Machine.] випустило Django 1.0 Website Development by Ayman Hourieh[16]
- грудень 2008: Packt Publishing [Архівовано 15 вересня 2010 у Wayback Machine.] випустило Django 1.0 Template Development by Scott Newman[17]
- грудень 2008: Apress випустило Pro Django by Marty Alchin.[18]
- жовтень 2008: Addison-Wesley випустило Python Web Development with Django by Jeff Forcier, Wesley Chun, and Paul Bissex.[19]
- квітень 2008: Packt Publishing [Архівовано 15 вересня 2010 у Wayback Machine.] випустило Learning Website Development with Django by Ayman Hourieh[20]
- ↑ а б GNU Guix — 2012.
- ↑ http://www.djangobook.com/en/2.0/chapter01.html#django-s-history
- ↑ The django Open Source Project on Open Hub: Languages Page — 2006.
- ↑ https://github.com/django/django/blob/master/LICENSE
- ↑ The django Open Source Project on Open Hub: Licenses Page — 2006.
- ↑ DjangoBook. Глава 5. Робота з базою даних: Моделі. Архів оригіналу за 27 жовтня 2010. Процитовано 15 вересня 2010.
- ↑ DjangoBook. Глава 6. Інтерфейс адміністратора Django. Архів оригіналу за 27 жовтня 2010. Процитовано 15 вересня 2010.
- ↑ DjangoBook. Глава 3. Основи динамічних сторінок. Архів оригіналу за 25 вересня 2010. Процитовано 15 вересня 2010.
- ↑ DjangoBook. Голова 10. Розширення для шаблонної системи. Архів оригіналу за 27 жовтня 2010. Процитовано 15 вересня 2010.
- ↑ DjangoBook. Голова 13. Кешування. Архів оригіналу за 27 жовтня 2010. Процитовано 15 вересня 2010.
- ↑ DjangoBook. Глава 18. Інтернаціоналізація. Архів оригіналу за 27 жовтня 2010. Процитовано 15 вересня 2010.
- ↑ Django i18n statistics. Архів оригіналу за 30 серпня 2010. Процитовано 15 вересня 2010. [Архівовано 2010-08-30 у Wayback Machine.]
- ↑ Архівована копія. Архів оригіналу за 26 листопада 2018. Процитовано 26 листопада 2018.
{{cite web}}
: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання) - ↑ Архівована копія. Архів оригіналу за 13 листопада 2010. Процитовано 15 вересня 2010.
{{cite web}}
: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання) [Архівовано 2010-11-13 у Wayback Machine.] - ↑ Архівована копія. Архів оригіналу за 13 листопада 2010. Процитовано 15 вересня 2010.
{{cite web}}
: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання) [Архівовано 2010-11-13 у Wayback Machine.] - ↑ Архівована копія. Архів оригіналу за 3 грудня 2010. Процитовано 15 вересня 2010.
{{cite web}}
: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання) - ↑ Архівована копія. Архів оригіналу за 9 листопада 2009. Процитовано 15 вересня 2010.
{{cite web}}
: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання) - ↑ Архівована копія. Архів оригіналу за 18 листопада 2010. Процитовано 15 вересня 2010.
{{cite web}}
: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання) [Архівовано 2010-11-18 у Wayback Machine.] - ↑ Архівована копія. Архів оригіналу за 28 грудня 2008. Процитовано 15 вересня 2010.
{{cite web}}
: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання) - ↑ Архівована копія. Архів оригіналу за 2 грудня 2010. Процитовано 15 вересня 2010.
{{cite web}}
: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
- Сайт Django [Архівовано 2 червня 2008 у Wayback Machine.] (англ.)
- Як запустити Django на Lighttpd з FastCGI [Архівовано 9 жовтня 2010 у Wayback Machine.] (англ.)
- DjangoBook — Безкоштовна книга про Django [Архівовано 29 вересня 2020 у Wayback Machine.] (англ.)
- Biblioteka Pythona — Документація та мануали (пол.)
- Топ-10 помилок, які Django розробники роблять (англ.)
- Українська спільнота matirx присвячена Django