Django (Django) е свободна софтуерна рамка за уеб приложения на езика Python, използваща модела за проектиране MVC (Model-View-Controller). Проектът се поддържа от организацията 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 и други.
Също така Django се използва като уеб компонент в различни проекти, като например Graphite – система за графики и мониторинг, FreeNAS – свободна реализация на система за съхранение и споделяне на файлове и др.
На базата на Django са разработени редица готови решения със свободен лиценз, включително онлайн магазини, системи за управление на съдържанието, както и по-тясно насочени проекти.
Архитектура Django
Архитектурата на рамката Django е подобна на тази на Model-Presentation-Controller (MVC). Контролерът на класическия модел MVC съответства приблизително на нивото, наречено Представяне в Django ( View), а логиката на представянето на Представянето е реализирана в Django чрез нивото Шаблони ( Template). Поради тази причина архитектурата на нивото на Django често се нарича „Модел-Шаблон-Представяне“ (MTV).
Първоначалното развитие на рамката Django, като инструмент за работа с информационни ресурси, доста силно се отразява на нейната архитектура: тя предоставя редица инструменти, които помагат за бързото разработване на уебсайтове с информационен характер. Например, на разработчика не му се налага да създава контролери и страници за административната част на сайта, рамката Django има вградено приложение за управление на съдържанието, което може да бъде включено във всеки сайт, направен на Django, и което може да управлява няколко сайта на един и същ сървър. Административното приложение позволява да се създават, променят и изтриват всякакви обекти на съдържанието в сайта, като регистрира всички извършени действия и предоставя интерфейс за управление на потребители и групи (с права, базирани на обекти).
Дистрибуцията на рамката Django включва и приложения за системата за коментари, синдикиране на RSS и Atom, „статични страници“ (които могат да се управляват, без да е необходимо да се пишат контролери и изгледи), пренасочвания URL и др.
Някои функции Django
LDAP, OpenID и др;
Някои компоненти на рамката са слабо свързани, така че могат да бъдат заменени с подобни доста лесно. Например, вместо вградените шаблони можете да използвате Mako или Jinja.
В същото време замяната на редица компоненти (например ORM) е доста трудна.
В допълнение към възможностите, вградени в ядрото на рамката, съществуват пакети, които разширяват нейните възможности. Възможностите, предоставяни от пакетите, както и пълният списък на пакетите, могат да бъдат удобно проследени чрез специален ресурс – www.djangopackages.com.
Конфигурация на сървъра за Django
Django проектирана да работи под Apache HTTPServer с модула mod_python и използване на PostgreSQL като база данни.
С включването на поддръжка за WSGI (Web Server Gateway Interface ), Django може да работи под FastCGI, mod_wsgi или SCGI (Simple Common Gateway Interface ) на Apache HTTP Server и други сървъри ( lighttpd, nginx,… ).
Понастоящем освен с базата данни PostgreSQL, Django може да работи и с други СУБД: MySQL, SQLite, Microsoft SQL Server, DB2, Firebird, SQL Anywhere и Oracle.
Рамката Django включва собствен уеб сървър за разработка. Сървърът автоматично открива промени във файловете с изходния код на проекта и се рестартира, което ускорява процеса на разработка на Python. Той обаче работи в еднонишкови режим и е подходящ само за процеса на разработка и отстраняване на грешки в приложението.
Хостинг за Django
Django може да бъде разположен на PaaS-услугата RedHat OpenShift, също безплатно.
Сравнителни данни за хостинг Django можете да намерите на адрес Django-wiki
Django за хостинг Google
Google App Engine Python ви позволява да използвате всяка версия Django.
Има някои особености при работа с Django в Google App Engine Python 2.7:
Това от своя страна кара някои функции на рамката, по-специално вградения административен интерфейс, да работят по ограничен начин.
Това ви позволява да използвате всички функции на рамката, както бихте го направили с обикновена релационна база данни.
Съществува версия Community-на Django-nonrel, адаптирана за работа с нерелационни хранилища на данни, която ви позволява да използвате напълно (доколкото е технически възможно) Django на платформата Google App Engine. А приставката django-dbindexer дори ви позволява да емулирате JOIN в нерелационни хранилищаданни.


