GithubHelp home page GithubHelp logo

dj-21v's Introduction

dj-21v

Django

Django (Джанго, ['dʒæŋɡoʊ]) — свободный программный каркас для веб-приложений на языке Python, использующий шаблон проектирования MVC. Проект поддерживается организацией Django Software Foundation. Джанго Рейнхардт — музыкант, в честь которого получил название фреймворк Сайт - http://djangoproject.com

  • Первый выпуск - 2003
  • Последняя версия - 1.9.1 (2 января 2016)
  • Лицензия - модифицированная лицензия BSD и лицензия BSD

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

Django Software Foundation

  1. Расселл Кейт-Маги (Russell Keith-Magee)
  2. Адриан Головатый (Adrian Holovaty),
  3. Саймон Виллисон (Simon Willison),
  4. Джейкоб Каплан-Мосс (Jacob Kaplan-Moss),
  5. Уилсон Майнер (Wilson Miner) Разработчики заявляют, что не обязуются строго придерживаться какой бы то ни было методологии в развитии проекта, предпочитая делать то, что кажется им наиболее логичным.

Сайт на Django строится из одного или нескольких приложений, которые рекомендуется делать отчуждаемыми и подключаемыми. Это одно из существенных архитектурных отличий этого каркаса от некоторых других (например, Ruby on Rails). Один из основных принципов каркаса — DRY (Don't repeat yourself) Также, в отличие от других каркасов, обработчики URL в Django конфигурируются явно при помощи регулярных выражений, а не выводятся автоматически из структуры моделей контроллеров. Для работы с базой данных Django использует собственный ORM, в котором модель данных описывается классами Python, и по ней генерируется схема базы данных.

Django используется

Веб-фреймворк Django используется в таких крупных и известных сайтах, как Instagram https://www.instagram.com/, Disqushttps://disqus.com/, Mozilla https://www.mozilla.org/en-US/, The Washington Times http://www.washingtontimes.com/, Pinterest https://www.pinterest.com/ и др.

Также Django используется в качестве веб-компонента в различных проектах, таких как Graphite — система построения графиков и наблюдения, FreeNAS — свободная реализация системы хранения и обмена файлами и др.

Архитектура

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

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

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

  • ORM, API доступа к БД с поддержкой транзакций
  • встроенный интерфейс администратора с уже имеющимися переводами на многие языки
  • диспетчер URL на основе регулярных выражений
  • расширяемая система шаблонов с тегами и наследованием
  • система кеширования
  • интернационализация
  • подключаемая архитектура приложений, которые можно устанавливать на любые Django-сайты
  • «generic views» — шаблоны функций контроллеров
  • авторизация и аутентификация, подключение внешних модулей аутентификации: LDAP, OpenID и проч.
  • система фильтров («middleware») для построения дополнительных обработчиков запросов, как например включённые в дистрибутив фильтры для кеширования, сжатия, нормализации URL и поддержки анонимных сессий
  • библиотека для работы с формами (наследование, построение форм по существующей модели БД)
  • встроенная автоматическая документация по тегам шаблонов и моделям данных, доступная через административное приложение

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

Помимо возможностей, встроенных в ядро фреймворка, существуют пакеты, расширяющие его возможности. Возможности, предоставляемые пакетами, а также полный перечень пакетов удобно отслеживать через специальный ресурс — www.djangopackages.com.

Решения

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

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

Django проектировался для работы под управлением Apache с модулем mod python и с использованием PostgreSQL в качестве базы данных. С включением поддержки WSGI, Django может работать под управлением FastCGI, mod_wsgi, uwsgi или SCGI на Apache и других серверах (lighttpd, nginx,…). В настоящее время, помимо базы данных PostgreSQL, Django может работать с другими СУБД: MySQL, SQLite, Microsoft SQL Server, DB2, Firebird, SQL Anywhere и Oracle. В составе Django присутствует собственный веб-сервер для разработки. Сервер автоматически определяет изменения в файлах исходного кода проекта и перезапускается, что ускоряет процесс разработки на Python. Но при этом он работает в однопоточном режиме и пригоден только для процесса разработки и отладки приложения.

Хостинг для Django

Django можно развернуть на PaaS-сервисе RedHat OpenShift https://www.openshift.com/, в том числе и бесплатно. Free Django Hosting - http://freedjangohosting.com/ Google App Engine Python позволяет использовать для работы любую версию Django. Также с Django можно работать через Google cloud-sql. Это позволяет использовать все возможности фреймворка, как и при работе с обычными реляционными базами. Существует community-версия Django-nonrel, адаптированная для работы с нереляционными хранилищами данных, которая позволяет полноценно использовать Django на платформе Google App Engine. А подключаемое приложение django-dbindexer позволяет даже эмулировать JOIN в нереляционных хранилищах данных.

dj-21v's People

Contributors

janusnic avatar

Stargazers

꧁꧂Larisa  avatar Andrey avatar asteryx avatar

Watchers

James Cloos avatar  avatar Andrey avatar Sergey avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.