Django | это... Что такое Django? (original) (raw)

Django

Django logo.svg
Тип веб-фреймворк
Автор Lawrence Journal-World
Написана на Python
Интерфейс веб-интерфейс
Операционная система кроссплатформенное ПО
Языки интерфейса русский и ещё 66 языков
Первый выпуск 2003[1]
Последняя версия 1.4.3 (17 октября 2012)
Состояние активное
Лицензия лицензия BSD
Сайт www.djangoproject.com

Django (Джанго) — свободный фреймворк для веб-приложений на языке Python. Изначально проект был создан для управления новостными сайтами LJWorld.com, lawrence.com и KUsports.com, принадлежащими компании The World Company (Лоуренс, Канзас (en), США).

Сайт на Django строится из одного или нескольких приложений, которые рекомендуется делать отчуждаемыми и подключаемыми. Это одно из существенных архитектурных отличий этого фреймворка от некоторых других (например, Ruby on Rails).

Также в отличие от других фреймворков обработчики URL в Django конфигурируются явно при помощи регулярных выражений, а не выводятся автоматически из структуры моделей контроллеров.

Для работы с базой данных Django использует собственный ORM, в котором модель данных описывается классами Python, и по ней генерируется схема базы данных.[2]

Содержание

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

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

Архитектура

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

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

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

Возможности

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

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

В то же время заменять ряд компонентов (например, ORM) довольно сложно.

Решения

На базе Django разработан ряд готовых решений со свободной лицензией[10], среди которых интернет-магазины, системы управления содержанием, а также более узконаправленные проекты.

Конфигурация сервера

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

С включением поддержки WSGI, Django может работать под управлением FastCGI, mod wsgi или SCGI на Apache и других серверах (lighttpd, nginx,…).

В настоящее время, помимо базы данных PostgreSQL, Django может работать с другими СУБД: MySQL, SQLite, Microsoft SQL Server, DB2, Firebird, SQL Anywhere и Oracle.

В составе Django присутствует собственный веб-сервер для разработки. Сервер автоматически определяет изменения в файлах исходного кода проекта и перезапускается, что ускоряет процесс разработки на Python. Но при этом он работает в однопоточном режиме и пригоден только для процесса разработки и отладки приложения.

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

Платформа Google App Engine имеет в своём составе ограниченную версию Django. [11]

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

Хостинг для Django

На данный момент Django только набирает обороты и хостингов с его специализированной поддержкой не так много. Среди существующих предложений можно выделить webfaction.com, Hosting4Django.net и RX-NAME.ua, как русскоязычный хостинг.

Основные крупные хостинг-провайдеры

Хостинг-провайдер Локация Тип хостинга
RX-NAME.ua Украина Обычный хостинг Django подключается как WCGI
webfaction.com США По запросу в поддержку
Hosting4Django.net Германия Автомат
TimeWeb.ru Россия Django подключается как WSGI
b: Django в Викиучебнике?

Примечания

  1. См. файл AUTHORS в архиве с исходными кодами Django.
  2. Маниакальный Веблог (Блог Ивана Сагалаева)
  3. Django FAQ
  4. DjangoBook. Глава 5. Работа с базой данных: Модели
  5. DjangoBook. Глава 6. Интерфейс администратора Django
  6. DjangoBook. Глава 3. Основы динамических страниц
  7. DjangoBook. Глава 10. Расширения для шаблонной системы
  8. DjangoBook. Глава 13. Кэширование
  9. DjangoBook. Глава 18. Интернационализация
  10. Open-Source Django projects
  11. Мэт Браун. Использование специального каркаса для интеграции Google App Engine с Django Май 2008

Литература

Ссылки

Просмотр этого шаблона Python
Люди Гвидо ван Россум
Реализации ChinesePython • CLPythonCPythonJPypeJythonIronPythonPyPy • Python for S60 • PsycoStackless PythonUnladen Swallow
Фреймворки CherryPyDjango • Flask • GAE frameworkPylonsPyramid • Quixote • TurboGearsTwisted • Web2py • Zope
IDE Boa Constructor • Eclipse+PyDev • EricGeanyIDLEKomodoNetBeans • PyCharm • PyScripter • SPE
Библиотеки Beautiful Soup • NLTKNumPyPILPygamePyGTK • Pyparsing • PyQtSciPySQLAlchemy
Другое ActivePythonPyPIPython Software FoundationЛицензия Python
Просмотр этого шаблона Веб-фреймворки
ASP.NET DotNetNukeASP.NET MVC • MonoRail
ColdFusion ColdSpring • Fusebox • Mach-II • Model-Glue
Java Apache (CocoonStrutsVelocity • WebWork 2) • AppFuse • AraneaEclipseFacelets • Flexive • FreeMarkerGoogle Web ToolkitGrailsHamlets • ItsNat • JavaServer Faces • Jspx • JBoss Seam • jZeno • Makumba • OpenLaszlo • OpenXava • Reasonable Server Faces (RSF) • Restlet • RichFaces • RIFE • Shale • SmartClientSpringStripesTapestry • ThinWire • VaadinWebMacro • WebWork • WebObjects • WicketZK
JavaScript node.js • AJILE • Clean AJAX • Dojo Toolkit • Echo • Ext JSjQueryjMaki • Microsoft AJAX Library • MochiKit • MooToolsPrototype • qooxdoo • Rialto Toolkit • Ricoscript.aculo.usSmartClientSprySproutCoreYahoo! UI LibraryUnderscorePhoneGap
Perl CatalystInterchange • Titanium • Maypole • HTML:Mason
PHP Acode • Akelos • BlueShoes • CakePHP • Canvas • CodeIgniterCotonti • DIY • Drupal • Fuse • Horde • KohanaLiveStreet • PHP For Applications • PHPOpenbiz • PRADO • Qcodo • Seagull • Solar • Symfony • W3Core • YiiZend • Zoop • Joomla
Python CherryPyDjangoGAE framework • Karrigell • Nevow • Porcupine • PylonsPyramid • Spyce • TurboGearsTwistedTornado • Webware • Zope
Ruby Camping • Nitro • IOWA • Ramaze • Cerise • MerbRuby on RailsSinatra • Padrino
Прочиеязыки Alpha Five • Fusebox (ColdFusionPHP) • Helma Object Publisher (Server-side) • Lift (Scala) • Magic (Scheme) • OpenACS (Tcl) • Seaside (Smalltalk) • UnCommon Web (Common Lisp) • Yaws (Erlang) • Oracle Application Express (PL/SQL)