django почему так называется

Django

русский и ещё 66 языков

1.4.3 (17 октября 2012)

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 почему так называется. Смотреть фото django почему так называется. Смотреть картинку django почему так называется. Картинка про django почему так называется. Фото django почему так называется

django почему так называется. Смотреть фото django почему так называется. Смотреть картинку django почему так называется. Картинка про django почему так называется. Фото django почему так называется

Возможности

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

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

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

Решения

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

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 почему так называется. Смотреть фото django почему так называется. Смотреть картинку django почему так называется. Картинка про django почему так называется. Фото django почему так называется

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

Источник

Что бы я хотел знать когда начинал изучать Django? — очень общий взгляд

Здесь на Хабре много различных инструкций по использованию Django. Эти инструкции часто включают много кода и представляют последовательность шагов, которые нужно сделать, чтобы создать проект.

Когда я начинал изучать Django и Wagtail по таким инструкциям, меня часто смущало, что пара команд создает кучу непонятных файлов (особенно на самом старте). Последующее описание этих файлов в инструкциях содержало слишком много деталей, которые трудно было усвоить за раз.

В этом посте я бы хотел посмотреть на Django с очень «философского вида» — минимум кода, максимум общих фактов. Думаю, что такой взгляд поможет тем, кто хочет начать изучать Django но теряется на старте.

django почему так называется. Смотреть фото django почему так называется. Смотреть картинку django почему так называется. Картинка про django почему так называется. Фото django почему так называется

Хочу также сказать, что не являюсь профессионалом по части веб-программирования — я в этой области скорее любитель, которого интересуют исключительно личные проекты — один из них сайт по расшифровке данных ДНК тестов https://ru.bezoder.com — написан на Wagtail.

Сначала давайте вспомним, что сайт в интернете это просто программа, которая, возможно, работает почти на таком же компьютере, что находится перед вами.

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

Это можно сделать вообще на каком угодно языке программирования — вы получаете запрос и на его основе что-то выполняете. Но представьте сколько может быть вариантов как запрограммировать этот компьютер — их может быть бесконечно много! Например, можно написать функцию что-то вроде:

Думаю, понятно, что это был бы ужасный вариант программирования.

Нам нужно сделать все так, чтобы код был читаемым, безопасным, легко дополняемым, использовал какие-то возможности языка, на котором написан…

С таким набором задач нужно придумать какую-то концепцию.

Концепция Django

Django предлагает все разделить на «слои«. Слои отвечают за разные составляющие вашей программы. Между слоями есть связь, но она не затрудняет разработку каждого слоя изолированно (без большого внимания к другим слоям) — в Django это называется loose coupling.

Вот несколько важных слоев Django:

Тут я немного подробнее остановлюсь на слоях Модели, Виды и Шаблоны.

Слой модели

Как видите, в базе каждая строка это запись, относящаяся к пользователю сайта. В строке есть данные различного типа — в нашем случае числа и текст.

Распространенным языком баз данных является SQL — определенными командами вы можете создавать новые таблицы в базе или вносить и получать данные в и из существующих таблиц.
У SQL есть уязвимости — подробнее. Вкратце — если определенным образом расставить кавычки и точки с запятой в данных, которые отправляются в SQL команду, часть этих данных может быть интерпретирована как составляющая SQL команды.

Django берет всю головную боль, связанную с проблемами SQL на себя — вам даже не надо знать SQL, чтобы пользоваться Django, от вас нужен только python — Django сам сформирует SQL команды для создания таблиц, поиска и записи данных в таблицы и все это будет безопасно.
Идея Django в том, что классы на python повторяют структуру таблиц вашей базы данных.

То есть, для таблицы выше я могу создать класс в python что-то вроде:

но как связать такой класс с базой данных? Вот тут начинается магия Django:

Вы просто используете django.db.models.Model чтобы создать класс, далее каждое поле в вашем классе это также поле, взятое из django.db.models. В моем случае поле name это текстовое поле CharField, поле karma это число float. Список всех полей (Field types) есть в официальной документации.

У каждого поля есть опции (Field options) — в коде выше опция это max_length = 20. Опции зависят от полей, которые вы создаете в базе — например, max_length = 20 это максимальная длина в символах поля name в базе. В документации по ссылке выше также описаны опции для всех полей.

На основе этого кода Django сам создаст таблицу в базе данных и то, что я назвал полями в классе будут столбцами в этой таблице. Django дает вам также удобные команды в python как получать или записывать значения в базу данных. Все делается с помощью методов models.Model а также абстракции «Manager», отвечающей в Django за коммуникацию с базой данных (в данном посте я эти абстракции детально не рассматриваю). Например, CustomUser.objects.filter(name=«Михаил») вернет всех пользователей с именем «Михаил».

Такая связь между строками в базе данных и объектами (экземплярами, инстансами) в Python называется Object-relational mapping — в нашем случае Django-ORM.

А наши модели повторяют структуру базы данных и при этом являются классами в Python. Это значит, что к моделям (классы в Python) можно добавить методы. Например, продолжая логику сайта Хабр, я могу добавить метод для изменения кармы:

Тут other — это другой пользователь. Как вы знаете здесь определенная логика добавления кармы. Всю эту логику я могу, например, создать в указанном методе.

В Django вы думаете какие таблицы хотите создать в своей базе и потом просто создаете классы python по примеру выше.

Слой виды

Следующим важным, на мой взгляд, слоем является слой видов (views). Ваши модели это некоторые абстракции, с которыми вам удобно работать или они интуитивно понятны. Но, когда вы хотите что-то показать пользователям, то, возможно, вас будут интересовать иные абстракции.

Например, вы создали три модели в Django: CustomUser, Article и Advertisement с разными полями. Модель Article это статья сайта, Advertisement — это реклама, которую вы показываете на сайте, CustomUser — зарегистрированный пользователь сайта.

Когда вы захотите создать вебстраницу со статьей, то вам понадобятся данные сразу из нескольких ваших моделей — разумеется вы хотите показать все поля в самой статье (название, содержание и т.д.), вы, скорее всего, также хотите показать какую-то рекламу рядом с этой статьей. Причем реклама зависит не от содержания статьи а от поведения пользователя CustomUser. При таком подходе будет нужна какая-то логика — как собирать данные. Так, слой view в данном случае и будет подходящим местом для этой логики. Тут можно собрать все данные, которые будут относиться к тому, что вы хотите показать.

Есть два типа видов view в Django — функциональный и классовый.

Функциональный вид это просто Python функция с аргументом request — это запрос к вашему сайту. В нем содержится информация о пользователе, типе запроса и многом другом. На основе этой информации вы формируете ответ и возвращаете его в своей функции.

Еще один тип view — классовый. Он позволяет создавать виды не на основе функций, а виды как экземпляры классов. Тут Django предоставляет также кучу всяких облегчающих жизнь классов и функций. Предположим, вы хотите создать вид на основе статьи Article:

Классовый вид на основе DetailView автоматически соберет всю информацию модели Article и затем отправит ее в следующий слой Django:

Слой шаблоны

В коде выше template_name это переменная для названия html шаблона, который будет использован для формирования веб страницы, которая и будет показана пользователю. Вот пример кода из такого шаблона:

Источник

Django почему так называется

Прежде чем мы погрузимся в изучение кода, следует уделить немного времени истории развития Django. Мы отметили, что мы будем рассказывать вам как всё работает без вспомогательных средств, чтобы помочь вам разобраться с внутренней кухней процессов. Аналогично, будет полезно для понимания того, почему была создана среда Django, почему Django работает именно так, а не иначе.

Если у вас есть достаточный опыт разработки приложений, возможно вы сталкивались с проблемами, показанными на примере CGI, который мы продемонстрировали ранее. Классический процесс разработки приложения выглядит так:

Создать приложение с нуля.

Создать другое приложение с нуля.

Реализовать работу первого приложения со вторым.

Переработать код так, чтобы оба приложения использовали общие функции.

Повторить шаги 2-4 несколько раз.

Вы изобрели среду разработки.

Именно так и была создана Django!

Замечание

Рекомендуем ознакомиться с:

Летом 2005, развив эту среду до такого состояния, что она поддерживала большинство сайтов World Online, команда разработчиков, включая Якоба Каплан-Мосса (Jacob Kaplan-Moss), решила выпустить среду в виде программного обеспечения с открытым исходным кодом. Они выпустили его в июле 2005 под именем Django в честь джазового гитариста Джанго Рэйнхарда (Django Reinhardt).

Эта история уместна, потому что помогает объяснить два ключевых аспекта. Первый аспект — основное назначение Django. Так как Django родился в новостной среде, он предоставляет некоторые средства (такие как административный интерфейс, описанные в главе « Интерфейс администратора Django » ), которые хорошо подойдут для контент-ориентированных сайтов, таких как Amazon.com, craigslist.org и washingtonpost.com, которые предоставляют динамическую информацию из базы данных. Существует разница между быть особенно эффективным в чём-то и быть неэффективным в другом.

Вторым аспектом является то, как происхождение Django сформировало культуру его сообщества открытого исходного кода. Так как Django был получен из реального кода, а не был академической разработкой или коммерческим продуктом, он полностью сфокусирован на решение проблем разработки, с которыми сталкивались и продолжают сталкиваться его авторы. В результате, Django постоянно совершенствуется. Основатели среды имеют свой интерес в том, чтобы Django экономил их время, создавал приложения лёгкие в обслуживании и хорошо работал под нагрузкой. При отсутствии других причин, разработчики мотивируются своими собственными эгоистичными желаниями сэкономить своё время и наслаждаться своей работой.

Источник

Как я изучал(изучаю фреймворк Django). Личный опыт.

Что нужно знать (необходимый МИНИМУМ) относительно Python:

-Ввод и вывод данных

-Функции и рекурсия

-Работа с модулями и функциями (создание, импортирование, вызов. )

-Основы регулярных выражений

В настоящее время, актуальной версией является Django 2.0. Но я советую начать изучение с версии 1.11. Почему именно так:

1. По Django 2.0 мало различных материалов на русском языке. Для 1.11 материалов достаточно.

2. Django 2.0 и 1.11 очень похожи, но в 2.0 сделали упрощённый синтаксис маршрутизации URL. Из-за этого могут возникнуть сложности на начальном этапе, если пытаться обучаться по материалам основанным на 1.11 версии.

3. Большинство готовых приложений и расширений до сих пор поддерживают только 1.11 версию и не поддерживают 2.

4. Расширенная поддержка версии 1.11LTS заканчивается в 2020 году, а 2.2LTS пока не видно.

Итак, расскажу как изучал я. Может быть кому-нибудь покажется полезной данная информация.

1. Проходим туториал на Django-girls.

Шаг за шагом копипастим и пытаемся понять что вообще происходит.

-Основы работы в консоли Linux

-Создание и работа в виртуальном окружении Python.

-Основы основ Django (urls, модели, шаблоны, views)

Альтернативный вариант (более короткий):

Версия 1.9 а не 1.11, но в этом нет ничего страшного.

2. Цикл лекций «Web-технологии. Разработка на DJANGO» от Mail.ru

Если не интересны основы-основ про web-разработку (уже знаете или задача быстро освоить Django), тогда начинаем смотреть с «9. Web-технологии. MVC фреймворки | Технострим» и дальше.

-Архитектуре и принципам взаимодействия компонентов, основам Django

3. Книга «Django: практика создания Web-сайтов на Python» Владимир Александрович Дронов:

ссылка: сами кУпите или найдёте.

Читаем главы с 1 по 7. Главу 2 опционально можете пропустить, если знакомы с основами Python.

-Пониманию основ MVC

-Через примеры кода начнет приходить понимание, как все работает.

-Через копипасту проекта в общем виде начали понимать как все устроено и работает

-Через лекции MAIL.ru узнали как работают web-приложения, как выглядит архитектура типичного web-приложения(взаимодействие бекенда-фронтэнда, работа протоколов, общая архитектура), узнали место Django в этой архитектуре

-Через книгу более детально познакомились с паттерном проектирования MVC (что такое модель, контроллер, представление), через примеры кода начали понимать как это может работать.

II. ПРОДОЛЖЕНИЕ НАЧАЛА(продолжаем «копипастить»):

1. Ищем курс «iTBursa Python&Django». Продажу курса уже закрыли (скорее всего видимо потому, что курс попал в открытый доступ). В курсе есть основы Python и Django. Плюсом идут основы: html/css, bootstrap web, http, databases, linux, shell, git/github, nginx, deployment.

Продолжаем копипастить уже по этому курсу, но теперь самостоятельно выполняем «Контрольные задания»(или не выполняем). В принципе этот курс мог бы заменить все вышеперечисленное. Но так как каждый человек воспринимает информацию по разному, ИМХО лучше усвоится информация, полученная из разных (по типу и виду подачи информации) источников.

Дополнительно: курс itvdn-Django от Антона Мазуна

2. Продолжаем читать и перечитывать Дронова

3. Изучаем официальную документацию или перевод документации 1.9(djbook.ru)

-На этом этапе уже должно быть освоено достаточное количество материалов для написания своего собственного приложения.

II. КОНЦА НЕ ВИДНО(создаём свой собственный проект):

Собственно если все делали правильно, на этом этапе должны быть все необходимые знания для реализации собственного проекта. По сути, можно сосредоточиться только на Джанго, а фронтэнд слепить из кусков Bootstrap.

Теперь отправляемся в свободное плавание на просторы интернета. Теперь уже сами ищем статьи, видео, гайды, бестпрактис. Продолжаем читать Дронова и переходим на актуальную версию Django 2.x

Дополнительно можно начать читать:

-Django подробное руководство. Адриан Головатый. Джейкоб Каплан-Мосс. Книга очень старая (2010), многое изменилось, но общие принципы остались те же.

-Tango with Django. Многие советуют эту книгу.

-Web Development with Django cookbook

Извиняюсь за возможные орфографические, и в особенности, за пунктуационные ошибки.

Источник

Откуда появились названия Python, Java и Django или как метафоры мешают понимать технологии

В издательстве «Альпина Паблишер» вышла книга «Искусственный интеллект. Пределы возможного» Мередит Бпруссард, которая раньше работала разработчиком в AT&T Bell Labs и MIT Media Lab. Автор в книге выступает против техношовинизма и социальных иллюзий о спасительной роли технологий. Spark публикует отрывок о том, какую роль в этих иллюзиях играют термины.

django почему так называется. Смотреть фото django почему так называется. Смотреть картинку django почему так называется. Картинка про django почему так называется. Фото django почему так называется

Проблема терминов не нова. Язык эволюционирует вместе с наукой. Например, в биологии клетки называются так, а не иначе, поскольку Роберту Гуку, открывшему их в 1665 г., они напомнили монастырские кельи*. Проблема наименования особенно актуальна сегодня, в свете динамичного развития технологий. Нам приходится привыкать к новым компьютерным концептам и внедрять различные устройства поразительно часто. Однако всему этому создатели присваивают имена, основанные на уже существующих объектах или концептах.

Лингвистические проблемы стали появляться и по мере того, как термин «машинное обучение» становился частью популярного дискурса. Машинное обучение (ML) предполагает, что каким-то образом компьютер обзавелся субъектностью и разумом, поскольку он «учится», ведь обучение — это слово, которое применяется к разумным существам вроде людей (или частично разумным, например животным). Тем не менее информатики прекрасно понимают, что «машинное обучение» — это скорее метафора, она означает, что машина может улучшать свои показатели при решении запрограммированных, рутинных, автоматизированных задач. Это вовсе не значит, что машина каким-то образом приобретает знания, мудрость или субъектность, несмотря на все то, что подразумевает слово «обучение». Подобная лингвистическая путница лежит в основе большинства ошибочных представлений о компьютерах.

Воображение добавляет неразберихи. Ваше понимание феномена искусственного интеллекта зависит от того, каким вы видите будущее. Один из студентов Марвина Минского, Рэй Курцвейл, является сторонником теории сингулярности — гипотезы, согласно которой к 2045 г. человек интегрируется с вычислительными системами. (Курцвейл известен тем, что изобрел музыкальный синтезатор, который звучит как рояль.) Современная научная фантастика охвачена идеей сингулярности. Однажды во время интервью для конференции футуристов меня спросили о теории скрепок : «Что если бы вы изобрели машину, которая хочет делать скрепки, затем научили бы ее хотеть делать что-то другое, а потом машина создала бы множество других машин и они бы захватили мир? Это и есть сингулярность? — спросил интервьюер. — Беспокоит ли вас это?» Это забавно, хотя и бессмысленно. Машину можно просто выключить из розетки. Проблема решена. А еще это чисто гипотетическая ситуация. Она не настоящая.

Как сказал психолог Стивен Пинкер в специальном выпуске журнала IEEE Spectrum (журнала Института инженеров электротехники и электроники), посвященном сингулярности: «Нет ни единой причины верить в скорое приближение сингулярности. Тот факт, что вы можете представить будущее в собственной голове, еще не значит, что оно наступит. Вспомним о купольных городах, передвижениях на реактивных ранцах, подводных городах, зданиях высотой километр и автомобилях на ядерном топливе — все это футуристические фантазии, которые я слышал с детства, так и не ставшие реальностью. Возможность обработки огромных массивов данных непохожа на волшебную пыль, которая внезапно решит все проблемы».

* И то и другое на английском именуется cells. — Прим. ред.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *