Что такое питон джанго
Веб-фреймворк Django (Python)
Django является чрезвычайно популярным и полнофункциональным серверным веб-фреймворком, написанным на Python. Данный модуль расскажет о том, почему Django один из самых популярных серверных веб-фреймворков, как установить среду разработки, и как начать использовать его для создания собственных веб-приложений.
Требования
Перед началом работы с этим модулем вам не обязательно уже быть знакомым с Django. Вам бы пригодилось общее понимание того, что такое серверное веб-программирование и веб-фреймворки, почерпнутое, в идеале, из топиков другого нашего модуля Первые шаги серверного программирования веб-сайтов.
Рекомендуется базовое понимание концепций программирования и языка Python, но это не обязательно для освоения основных понятий.
Примечание: Python является одним из самых доступных в чтении и понимании для новичков языком программирования. Тем не менее, если вы захотите глубже понять этот модуль, в Интернете сейчас доступны многочисленные бесплатные книги и учебные пособия (новички в программирование возможно захотят посетить Python for Non Programmers на вики-страницах python.org).
Руководство
Задания
Следующее задание проверит ваше понимание того, как создать сайт с помощью Django, как описано в руководствах, перечисленных выше.
DIY Django мини-блог В этом задании вы будете использовать некоторые знания, которые вы узнали из этого модуля, чтобы создать свой собственный блог.
Плюсы и минусы Django
Прим. перев.: Эта статья рассчитана в основном на тех кто только выбирает фреймворк для веб-разработки. Опытные разработчики на Django вряд ли узнают что-то новое.
Django описывают как «веб-фреймворк для перфекционистов с дедлайнами». Его создали, чтобы переходить от прототипов к готовым сервисам как можно быстрее.
Фреймворк поможет разработать CRUD приложение под ключ. С Django не придется изобретать велосипед. Он работает из коробки и позволит сосредоточиться на бизнес-логике и продуктах для обычных людей.
Плюсы Джанго
Принцип «Всё включено» («Batteries included»)
Фраза «всё включено» означает, что большинство инструментов для создания приложения — часть фреймворка, а не поставляются в виде отдельных библиотек.
Django содержит огромное количество функциональности для решения большинства задач веб-разработки. Вот некоторые из высокоуровневых возможностей Django, которые вам придётся искать отдельно, если вы предпочтёте микро-фреймворк:
Стандартизированная структура
Django как фреймворк задаёт структуру проекта. Она помогает разработчикам понимать, где и как добавлять новую функциональность.
Благодаря одинаковой для всех проектов структуре гораздо проще найти уже готовые решения или получить помощь от сообщества. Огромное количество увлеченных разработчиков поможет справиться с любой задачей гораздо быстрее.
Приложения Django
Приложения в Django позволяют разделить проект на несколько частей. Приложения устанавливаются путём добавления в settings.INSTALLED_APPS. Этот подход позволяет легко интегрировать готовые решения.
Сотни универсальных модулей и приложений очень сильно ускорят разработку. Взгляните на их список на сайте djangopackages.org.
Безопасный по умолчанию
Django безопасен из коробки и включает механизмы предотвращения распространенных атак вроде SQL-инъекций (XSS) и подделки межсайтовых запросов (CSRF). Подробнее об этом можно почитать в официальном руководстве по безопасности.
REST Framework для создания API
Django REST Framework, который часто сокращают до «DRF», является библиотекой для построения API. Он имеет модульную и настраиваемую архитектуру, которая хорошо работает для создания как простых, так и сложных API.
В DRF политики аутентификации и разрешений доступны из коробки. Он поставляется с базовыми классами для CRUD операций и встроенной утилитой для тестирования разрабатываемого API.
GraphQL фреймворк для создания API
Большие REST API часто требуют большого количества запросов для получения всех необходимых данных. GraphQL — это язык запросов, который позволяет обмениваться связанными данными гораздо проще. Подробнее почитать про основные концепции GraphQL можно в официальной документации.
Graphene-Django позволит легко добавить соответствующую функциональность в ваш проект. Модели, формы, аутентификация, политики разрешений и другие функциональные возможности Django можно использовать для создания GraphQL API. Библиотека так же поставляется с утилитой для тестирования результата.
Недостатки Джанго
Django ORM
Django ORM сегодня значительно уступает последней SQLAlchemy.
Django ORM основан на шаблоне Active Record, который хуже, чем шаблон Unit of Work, используемый в SQLAlchemy. На практике это выражается в том, что в Django модели могут «сохранять» себя по желанию, а транзакции отключены по умолчанию. Подробнее об этом можно почитать в статье «Вещи, которые мне не нравятся в Django».
Django развивается медленно
Django является большим и монолитным фреймворком. Это позволяет сообществу разрабатывать сотни универсальных модулей и приложений, но снижает скорость разработки самого Django. Кроме того, фреймворк должен поддерживать обратную совместимость, поэтому он развивается относительно медленно.
В итоге: должен ли я выбрать Django?
Хотя Django ORM не так гибок, как SQLAlchemy, а большая экосистема многократно используемых модулей и приложений замедляет развитие инфраструктуры, очевидно, Django должен быть первым кандидатом на роль фреймворка для питониста.
Альтернативные легкие фреймворки типа Flask, хотя и позволяют быть свободнее Django в экосистеме и конфигурации, могут потребовать лишнего времени на поиск/создание дополнительных библиотек и функциональных возможностей в долгосрочной перспективе.
Стабильность Django и сообщество вокруг него выросли до невообразимых размеров с момента первого релиза. Официальная документация и учебные пособия по фреймворку являются одними из лучших в своём роде. А с каждой новой версией Django продолжает обрастать возможностями.
Что такое Django?
Django (/ˈdʒæŋɡoʊ/ джанго) — бесплатный и свободный фреймворк для веб-приложений, написанный на Python. Фреймворк — это набор компонентов, которые помогают разрабатывать веб-сайты быстро и просто.
Каждый раз при разработке веб-сайтов требуются похожие компоненты: способ аутентифицировать пользователей (вход, выход, регистрация), панель управления сайтом, формы, инструменты для загрузки файлов и т. д.
К счастью для нас, другие люди обратили внимание на возникновение однотипных проблем при веб-разработке, так что они объединились и создали фреймворки (Django и другие), которые предлагают нам готовые шаблоны для использования.
Фреймворки существуют, чтобы облегчить процесс разработки и позволить нам не изобретать колесо.
Зачем нам нужен фреймворк?
Чтобы понять, для чего же нам нужен Django, нам нужно ближе познакомиться с серверами. Во-первых, сервер должен узнать о том, что мы ждём от него веб-страницу.
Представь себе почтовый ящик (порт), который проверяется на наличие новых писем (запросов). Это делает веб-сервер. Когда письмо приходит, сервер читает его и отправляет ответ с веб-страничкой. Однако чтобы что-то отправить, нам надо это что-то иметь. И Django как раз и отвечает за создание контента, который будет отправлен в ответе.
Что происходит, когда кто-то запрашивает веб-сайт у твоего сервера?
Когда на сервер приходит запрос, он переадресуется Django, который пытается сообразить, что же конкретно от него просят. Для начала он берет адрес веб-страницы и пробует понять — что же нужно сделать. Эту часть процесса в Django выполняет urlresolver (адрес веб-сайта называется URL — Uniform Resource Locator — Единый указатель ресурсов, так что название urlresolver, resolver == распознаватель, имеет определенный смысл). Он не слишком умён, поэтому просто берет список шаблонов и пытается сопоставить их с URL. Django сверяет шаблоны сверху вниз и, если что-то совпадает, он перенаправляет запрос соответствующей функции (которая называется view).
Представь себе почтальона с письмом. Она идет вниз по улице и сверяет номера домов с адресом на письме. Если они совпадают, то она оставляет письмо. Так же работает и urlresolver!
Но самые интересные вещи происходят в функции view: мы, например, можем обращаться к базе данных за определенной информацией. Может быть, пользователь попросил изменить какую-нибудь информацию? Как будто в письме написано: «Пожалуйста, поменяйте описание моей работы.» Функция view может проверить, имеете ли вы разрешение делать это, а затем обновит описание работы и отправит обратно ответ: «Готово!». Затем функция view сгенерирует ответ, и Django сможет отправить его веб-браузеру пользователя.
В реальности все немного сложнее, однако тебе не обязательно знать все технические навороты прямо сейчас. Достаточно основной концепции.
Так что вместо погружения в пучины нюансов мы просто начнем работать с Django и познакомимся со всеми важными особенностями по мере продвижения!
Django введение
В первой статье о Django мы отвечаем на вопрос «Что такое Django?» и даём обзор того, что делает его особенным. Мы опишем основные функции, в том числе некоторые из расширенных функций, которые у нас не будет времени подробно рассмотреть в этом модуле. Мы также покажем вам некоторые основные строительные блоки приложения Django (хотя на данный момент у вас ещё не будет среды разработки для тестирования).
Требования: | Базовая компьютерная грамотность. Общее понимание server-side website programming, и в частности, механики client-server interactions in websites. |
---|---|
Задача: | Узнать, что такое Django, какие функции он предоставляет, и основные строительные блоки приложения Django. |
Что такое Django?
Django — это высокоуровневый Python веб-фреймворк, который позволяет быстро создавать безопасные и поддерживаемые веб-сайты. Созданный опытными разработчиками, Django берёт на себя большую часть хлопот веб-разработки, поэтому вы можете сосредоточиться на написании своего веб-приложения без необходимости изобретать велосипед. Он бесплатный и с открытым исходным кодом, имеет растущее и активное сообщество, отличную документацию и множество вариантов как бесплатной, так и платной поддержки.
Django помогает писать программное обеспечение, которое будет:
Полным Django следует философии «Всё включено» и предоставляет почти всё, что разработчики могут захотеть сделать «из коробки». Поскольку всё, что вам нужно, является частью единого «продукта», всё это безупречно работает вместе, соответствует последовательным принципам проектирования и имеет обширную и актуальную документацию. Разносторонним Django может быть (и был) использован для создания практически любого типа веб-сайтов — от систем управления контентом и wiki до социальных сетей и новостных сайтов. Он может работать с любой клиентской средой и может доставлять контент практически в любом формате (включая HTML, RSS-каналы, JSON, XML и т. д.). Сайт, который вы сейчас читаете, создан с помощью Django! Хотя Django предоставляет решения практически для любой функциональности, которая вам может понадобиться (например, для нескольких популярных баз данных, шаблонизаторов и т. д.), внутренне он также может быть расширен сторонними компонентами, если это необходимо. Безопасным Django помогает разработчикам избежать многих распространённых ошибок безопасности, предоставляя фреймворк, разработанный чтобы «делать правильные вещи» для автоматической защиты сайта. Например, Django предоставляет безопасный способ управления учётными записями пользователей и паролями, избегая распространённых ошибок, таких как размещение информации о сеансе в файлы cookie, где она уязвима (вместо этого файлы cookie содержат только ключ, а фактические данные хранятся в базе данных) или непосредственное хранение паролей вместо хэша пароля. Хэш пароля — это значение фиксированной длины, созданное путём обработки пароля через криптографическую хэш-функцию. Django может проверить правильность введённого пароля, пропустив его через хэш-функцию и сравнив вывод с сохранённым значением хэша. Благодаря «одностороннему» характеру функции, даже если сохранённое хэш-значение скомпрометировано, злоумышленнику будет сложно определить исходный пароль. Django, по умолчанию, обеспечивает защиту от многих уязвимостей, включая SQL-инъекцию, межсайтовый скриптинг, подделку межсайтовых запросов и кликджекинг (см. Website security для получения дополнительной информации об этих атаках). Масштабируемым Django использует компонентную “shared-nothing” архитектуру (каждая её часть независима от других и, следовательно, может быть заменена или изменена, если это необходимо). Чёткое разделение частей означает, что Django может масштабироваться при увеличении трафика, путём добавления оборудования на любом уровне: серверы кеширования, серверы баз данных или серверы приложений. Одни из самых загруженных сайтов успешно масштабировали Django (например, Instagram и Disqus, если назвать только два из них). Удобным в сопровождении Код Django написан с использованием принципов и шаблонов проектирования, которые поощряют создание поддерживаемого и повторно используемого кода. В частности, в нём используется принцип «Don’t Repeat Yourself» (DRY, «не повторяйся»), поэтому нет ненужного дублирования, что сокращает объём кода. Django также способствует группированию связанных функциональных возможностей в повторно используемые «приложения» и, на более низком уровне, группирует связанный код в модули (в соответствии с шаблоном Model View Controller (MVC)). Переносным Django написан на Python, который работает на многих платформах. Это означает, что вы не привязаны к какой-либо конкретной серверной платформе и можете запускать приложения на многих версиях Linux, Windows и Mac OS X. Кроме того, Django хорошо поддерживается многими веб-хостингами, которые часто предоставляют определённую инфраструктуру и документацию для размещения сайтов Django.
Как он появился?
Django был разработан в период с 2003 по 2005 год командой, которая занималась созданием и обслуживанием газетных веб-сайтов. После создания нескольких сайтов, команда начала повторно использовать множество общего кода и шаблонов проектирования. Этот общий код эволюционировал в веб-фреймворк, который превратился в проект «Django» с открытым исходным кодом в июле 2005 года.
Django продолжает расти и улучшаться с момента его первого релиза (1.0) в сентябре 2008 года до недавно выпущенной версии 3.1 (2020). В каждой версии добавлены новые функциональные возможности и исправлены ошибки, начиная от поддержки новых типов баз данных, шаблонизаторов и кеширования, до добавления «общих» функций просмотра и классов (уменьшающих объём кода, который разработчики должны писать для ряда программных задач).
Примечание: Ознакомьтесь с примечаниями к версии на сайте Django, чтобы увидеть что изменилось в последних версиях и как много работы было проделано, чтобы улучшить Django.
Django — это процветающий совместный проект с открытым исходным кодом, в котором заняты многие тысячи пользователей и участников. Несмотря на то, что у него всё ещё есть некоторые особенности, которые отражают его происхождение, Django превратился в универсальный фреймворк, способный разрабатывать веб-сайты любого типа.
Насколько популярен Django?
Нет никаких доступных и окончательных оценок популярности серверных фреймворков (хотя сайты наподобие Hot Framework и пытаются оценить популярность, используя такие механизмы, как подсчёт количества проектов на GitHub и вопросов на StackOverflow для каждой платформы). Лучший вопрос — «достаточно ли Django популярен», чтобы избежать проблем непопулярных платформ. Продолжает ли он развиваться? Можете ли вы получить помощь, если вам нужно? Найдёте ли вы оплачиваемую работу, если изучите Django?
Основываясь на количестве крупных сайтов, которые используют Django, количестве участников и количестве людей, предоставляющих как бесплатную, так и платную поддержку, можно ответить: да, Django — популярный фреймворк!
Django используют такие крупные сайты, как Disqus, Instagram, Knight Foundation, MacArthur Foundation, Mozilla, National Geographic, Open Knowledge Foundation, Pinterest и Open Stack (источник: обзорная страница Django).
Является ли Django гибким?
Веб-фреймворки часто можно поделить на «гибкие» и «негибкие».
Напротив, у гибких фреймворков гораздо меньше ограничений на лучший способ склеивания компонентов для достижения цели или даже того, какие компоненты следует использовать. Они облегчают разработчикам использование наиболее подходящих инструментов для выполнения конкретной задачи, хотя и за счёт того, что вам нужно самим найти эти компоненты.
Django «умеренно гибкий» и, следовательно, обеспечивает «лучшее из обоих миров». Он предоставляет набор компонентов для обработки большинства задач веб-разработки и один (или два) предпочтительных способа их использования. Однако такая архитектура Django означает, что вы обычно можете выбирать из нескольких различных опций или при необходимости добавлять поддержку для совершенно новых.
Как выглядит код Django?
На традиционном информационном веб-сайте веб-приложение ожидает HTTP-запросы от веб-браузера (или другого клиента). Когда запрос получен, приложение разрабатывает то, что необходимо на основе URL-адреса и, возможно, данных в POST или GET запросах. В зависимости от того, что требуется, далее он может читать или записывать информацию из базы данных или выполнять другие задачи, необходимые для удовлетворения запроса. Затем приложение вернёт ответ веб-браузеру, часто динамически создавая HTML-страницу для отображения в браузере, вставляя полученные данные в HTML-шаблон.
Веб-приложения, написанные на Django, обычно группируют код, который обрабатывает каждый из этих шагов, в отдельные файлы:
Примечание: Django реализует уровневую архитектуру «Model View Template (MVT)». Она имеет много общего с более известной архитектурой Model View Controller.
Следующие разделы дадут вам понимание того, как выглядят основные части Django (мы их изучим более детально чуть позже на курсе, когда будет настраивать окружение разработчика).
Отправка запроса в правильное view (urls.py)
Сопоставитель URL-адресов обычно содержится в файле urls.py. В примере ниже сопоставитель ( urlpatterns ) определяет список сопоставлений междумаршрутами (определёнными URL-шаблонами) и соответствующими функциями отображения (view). Если получен HTTP-запрос, который имеет URL-адрес, соответствующий определённому шаблону, то затем будет вызвана связанная функция отображения (view) и передана в запрос.
Объект urlpatterns является списком функций path() и/или re_path() (в Python списки определяются с помощью квадратных скобок, внутри которых элементы разделены запятыми и могут содержать необязательную завершающую запятую. Например: [item1, item2, item3,] ).
Второй аргумент — это ещё одна функция, которая будет вызываться при сопоставлении шаблона. Обозначение views.book_detail указывает, что функция называется book_detail() и может быть обнаружена в модуле с именем views (т.е. внутри файла с именем views.py ).
Обработка запроса (views.py)
Отображения (views) — это сердце веб-приложения, принимающего HTTP-запросы от веб-клиентов и возвращающего HTTP-ответы. Между этим они используют другие ресурсы фреймворка для доступа к базам данных, шаблонам визуализации и т. д.
Примечание: Немного Python:
Отображения (view) обычно содержатся в файле views.py.
Определение данных модели (models.py)
Веб-приложения Django обрабатывают и запрашивают данные через объекты Python, называемые моделями. Модели определяют структуру хранимых данных, включая типы полей и, возможно, их максимальный размер, значения по умолчанию, параметры списка выбора, текст справки для документации, текст меток для форм и т. д. Определение модели не зависит от используемой базы данных — ваши модели будут работать в любой из них. После того как вы выбрали базу данных, которую хотите использовать, вам не нужно напрямую обращаться к ней — вы просто пишете свою структуру модели и другой код, а Django выполняет всю «грязную работу» по обращению к базе данных за вас.
Примечание: Немного Python:
Запросы данных (views.py)
Модель Django предоставляет простой API запросов для поиска в базе данных. Поиск может осуществляться по нескольким полям одновременно, используя различные критерии (такие как exact («точный»), case-insensitive («без учёта регистра»), greater than («больше чем») и т. д.), и может поддерживать сложные выражения (например, вы можете указать поиск в командах U11, у которых есть имя команды, начинающееся с «Fr» или заканчивается на «al»).
Фрагмент кода показывает функцию view (обработчик ресурсов) для отображения всех команд U09. Выделенная жирным строка показывает, как мы можем использовать модель API-запросов для того, чтобы отфильтровать все записи, где поле team_level в точности содержит текст ‘U09’ (обратите внимание, как эти критерии передаются функции filter() в качестве аргумента с именем поля и типом соответствия, разделённым двойным подчёркиванием: team_level__exact).
Вывод данных (HTML-шаблоны)
Системы шаблонов позволяют указать структуру выходного документа, используя заполнители для данных, которые будут вставлены при генерировании страницы. Шаблоны часто используются для создания HTML, но также могут создавать другие типы документов. Django «из коробки» поддерживает как собственную систему шаблонов, так и другую популярную библиотеку Python под названием Jinja2 (она также может быть использована для поддержки других систем, если это необходимо).
Что ещё можно сделать?
В предыдущих разделах показаны основные особенности, которые вы будете использовать почти в каждом веб-приложении: сопоставление URL-адресов, отображение, модели и шаблоны. Также Django предоставляет несколько других вещей:
Резюме
Поздравляем, вы завершили первый шаг в своём путешествии по Django! Теперь вы должны понимать основные преимущества Django, немного его истории, и примерно как может выглядеть каждая из основных частей приложения Django. Вы должны также изучить несколько вещей о языке программирования Python, включая синтаксис списков, функций и классов.
Вы уже видели код на Django выше, но в отличие от клиентского кода вам нужно настроить среду разработки для её запуска. Это наш следующий шаг.
Python и Django: почему они считаются лучшим выбором для веб-разработки?
Сегодня мы поговорим о Python и в частности о таком фреймворке как Django. Обсудим, почему они пользуются довольно сильной популярностью и какие крупные компании используют данный стек технологий. Также рассмотрим, почему Python и Django так хорошо подходят для веб-разработки.
Python
Немного из истории возникновения
Создавая приложение для электронной почты на языке C примерно в 1990 году, Гвидо ван Россум столкнулся с некоторыми трудностями. Они возникли при написании программы для входа в систему. Всё потому, что тогда еще не существовало систем для управления логинами и паролями. Предчувствуя, что эта программа потребует слишком большого количества кода на C, ван Россум придумал Python. Впервые представленный публике в 1991 году, Python стал самым любимым языком в 2018 году согласно ежегодному опросу Stack Overflow.
Почему Python хорош для веб-разработки?
Python продолжает оставаться одним из самых популярных языков. Согласно TIOBE, Python входит в число лучших языков программирования. BuiltWith утверждает, что существует почти миллион веб-сайтов, использующих этот язык.
Python одинаково ценится в стартапах, таких как Finance Strategists, и компаниях среднего размера, таких как EP Wealth. Более того, он пользуется популярностью и среди влиятельных корпораций, таких как Google, Quora, Netflix и Spotify, а также правительственных организаций, таких как NASA. Так почему же он приобрел такую большую популярность?
Вот некоторые достоинства Python:
Кто использует Python?
Компании по всему миру используют Python для создания систем искусственного интеллекта и машинного обучения, разработки веб-сайтов, научных и числовых вычислений, создания игр и многих других целей.
Одна из крупнейших компаний, использующих Python, — это Google. Первая версия поисковой системы Google и весь стек технологий были написаны на Python. Кроме того, Google использует Python во многих своих приложениях. Например, поиск, электронная почта, потоковое воспроизведение музыки и видео, беспилотные автомобили и пр. Фактически, весь стек технологий YouTube написан на Python.
Еще один крупный игрок, использующий Python, — это Facebook. Эта компания применяет Python для поддержки и улучшения своей архитектуры и для машинного обучения. Здесь ML-алгоритмы используются для обработки контента в ленте новостей, а также для распознавания объектов на фотографиях.
Также Python используется в приложении Dropbox (облачная платформа для хранения данных). Dropbox с самого начала использует Python для всего технологического стека. Более того, они используют фреймворк Django: с его помощью реализован функционал хранения файлов, синхронизация учетных записей и совместное использование файлов.
Альтернативы Python
Давайте кратко сравним Python с такими языками программирования, как Java, PHP и Ruby.
ЯП | Python | Java | PHP | Ruby |
---|---|---|---|---|
Парадигма | Высокоуровневый, интерпретируемый, объектно-ориентированный, функциональный | Основанный на классах, интерпретируемый, одновременный, объектно-ориентированный, | Сценарный язык, серверный, интепретируемый | Интерпретируемый, высокоуровневый, объектно-ориентированный |
Производительность | Ниже, чем у Java и PHP | Быстрее Python и Ruby | Быстрее Python и Ruby | Самый медленный из этих языков |
Синтаксис | Простой | Сложный | Более сложный, чем у Python (скорее похож на С, Perl, Java) | Проще и гибче, чем Java и PHP, но сложнее, чем Python |
Типизация | Динамическая | Статическая | Динамическая | Динамическая |
Сообщество | Большое и разнообразное сообщество, отличная документация | Большое сообщество, отличная документация | Достаточно большое сообщество, отличная документация | Большое сообщество, сфокусированное на веб-разработке, хорошая документация |
Области использования | AI, веб-разработка, ML, написание скриптов, геймдев и др. | Мобильная и веб-разработка | Веб-разработка | Веб-разработка |
Веб-фреймворки | Django, Flask, Pyramid, TurboGears, Web2py | Spring, Blade, JSF, Struts | Laravel, Symfony, Codelgniter, CakePHP, Zend | Ruby on Rails, Sinatra, Nancy, Cuba, Hanami |
Компании | Google, Quora, Reddit, YouTube, Spotify | Uber, Google, Lyft, eBay, LinkedIn | WordPress, Wikipedia, Yahoo, Tumblr, Udemy, Flickr | Apple, GitHub, Twitter, Airbnb, LinkedIn, Shopyfi |
Веб-разработка на Django
Если вы решили создать веб-сайт на Python, пора подумать о выборе фреймворка. Мы рассмотрим все важные аспекты веб-разработки на Python с помощью Django, чтобы вы смогли понять, подойдет ли он для вашего стартапа.
Что такое Django?
Django — это бесплатный полнофункциональный фреймворк для создания веб-приложений. Написан на Python, имеет открытый исходный код. Если говорить по-простому, Django — это набор готовых компонентов, которые помогут вам быстро создавать веб-сайты с прагматичной и чистой архитектурой.
При создании веб-сайтов разработчикам часто требуются одни и те же компоненты. Например для таких задач, как аутентификация пользователей, загрузка файлов и внедрение систем CMS. Django предоставляет готовые решения, позволяющие не изобретать заново велосипед при создании каждого нового сайта.
В чем разница между разработкой на чистом Python и при помощи Django?
Python и Django взаимосвязаны, но это не одно и то же. Python – это язык программирования, имеющий множество различных применений: искусственный интеллект, машинное обучение, десктопные приложения и т.д. А Django – это фреймворк Python для разработки полнофункциональных веб-приложений и серверов.
Создавая сайт, вы можете написать его на чистом Python, проектируя все решения самостоятельно, либо создать его при помощи Django, используя заранее написанные фрагменты кода.
Почему Django хорош для веб-разработки?
Среди фреймворков Python Django считается лучшим фреймворком для разработки веб-приложений. Он даже вошел в список самых любимых фреймворков в опросе разработчиков Stack Overflow 2018.
Этот фреймворк был изобретен Адрианом Головатым и Саймоном Уиллисоном — разработчиками, работавшими на новостном сайте World Online. В то время Адриан и Саймон писали на PHP. Но поскольку сайт World Online требовал быстрого обновления, стало трудно укладываться в сроки. Тогда они решили перейти на Python. Позже они начали работать над Django, чтобы сделать процесс написания кода еще более простым и эффективным. В 2005 году Django уже был публично выпущен как проект с открытым исходным кодом.
Фреймворк для перфекционистов
Благодаря простому синтаксису программы, написанные на Django, чисты, читабельны и хорошо структурированы. Это помогает разработчикам воплощать свои идеи в жизнь и быстрее выполнять требования.
Скорость
Django был создан, чтобы помочь создавать программное обеспечение как можно быстрее. Философия Don’t Repeat Yourself (DRY), на которой построен Django, побуждает разработчиков повторно использовать написанный ими код для других проектов. Это существенно сокращает время, необходимое для разработки продукта.
Поэтому, если у вас мало времени и ограниченный бюджет, или если вы часто работаете в сжатые сроки и уделяете большое внимание инновациям, Django – идеальное решение.
«Батарейки в комплекте»
Во фреймворке Django есть все необходимое для разработки полноценного приложения. Например, Django предлагает встроенные шаблоны HTML, маршрутизацию URL-адресов, объектно-реляционное отображение и управление сессиями. Это избавляет разработчиков от утомительного поиска сторонних инструментов. Сотни пакетов Django помогут вам быстро создать что угодно, от чат-ботов до сложных решений с поддержкой GPS.
Масштабируемость
Компоненты Django разделены, то есть их можно добавлять или удалять по мере необходимости, как элементы Lego. В зависимости от требований вашего продукта, масштаб проекта может быть увеличен или уменьшен путем изменения количества и сложности компонентов Django.
Безопасность
Django защищает приложения по умолчанию. Он устраняет некоторые из наиболее распространенных ошибок безопасности, связанных с Python. Кроме того, он защищает приложения от межсайтового скриптинга, подделки запросов и SQL-инъекций.
Работает с большинством баз данных
Объектно-реляционное отображение (ORM) Django совместимо с рядом популярных баз данных. Однако его ключевой особенностью является то, что он позволяет разработчикам работать с несколькими базами данных одновременно. Более того, Django позволяет переходить из одной базы данных в другую и выполнять стандартные операции без необходимости написания большого количества дополнительного кода.
Постоянно развивается благодаря своему сообществу
Вокруг Django существует большое сообщество, к которому с каждым днем присоединяется все больше энтузиастов. Они постоянно обновляют и улучшают компоненты фреймворка, а также разрабатывают новые библиотеки для решения проблем, с которыми профессионалы часто сталкиваются при разработке веб-приложений.
Кто пользуется Django?
Ниже мы перечислили несколько крупных компаний, пользующихся Django. Давайте посмотрим, как этот фреймворк помог им расти и развиваться.
Disqus
Disqus – это стороннее приложение для комментариев для блогов и онлайн-сообществ. Он помогает удерживать пользователей и анализировать аудиторию, предоставляет рекламные возможности и предлагает инструменты для взаимодействия с пользователями. В начале Disqus рассматривал различные архитектуры, но остановил свой выбор на Python, Django, Thoonk и Nginx Push Stream Module. В Disqus Django обеспечивает настраиваемую аналитику, интеграцию с социальными сетями и управление присутствием в Интернете.
Disqus использовал фреймворк Django не только для разработки и масштабирования, но и для создания Sentry — побочного проекта, изначально предназначенного для внутреннего использования. Позже Sentry стал приложением с открытым исходным кодом, которое помогает предприятиям отслеживать и отлаживать ошибки и исправлять сбои в системах. Кроме того, сегодня Sentry используют более 30 000 компаний, включая Doordash, Instagram, Reddit, Prezi и Datadog.
Имея более одного миллиарда активных пользователей в месяц, ежедневно публикуя более 500 миллионов историй и ежедневно загружая более 100 миллионов фотографий, Instagram необходимо обеспечить максимальную эффективность, чтобы платформа могла плавно масштабироваться без ущерба для качества. Django помогает им справиться с этим. Фактически, у Instagram самое большое развертывание Django в мире.
Альтернативы Django
Pyramid, Laravel, Symfony и Ruby on Rails – эти фреймворки часто считаются альтернативой Django. Их сравнение мы и приведем ниже.
Фреймворк | Django, Python | Pyramid, Python | Laravel, PHP | Symfony, PHP | Ruby on Rails |
---|---|---|---|---|---|
Философия | Явное лучше, чем неявное | Начинай с маленького, заканчивай большим, оставайся завершенным | Фреймворк PHP для веб-мастеров | Symfony — это набор компонентов PHP, фреймворк для веб-разработки, философия и сообщество, работающие вместе в гармонии | Соглашение превыше конфигурации с высокой производительностью |
Хорош для | Любой проект веб-разработки | Менее сложные веб-проекты | И большие, и маленькие проекты | Как корпоративные приложения, так и микросайты | Серверные веб-приложения базы данных |
Производительность | Высокая | Высокая | Чуть ниже, чем у Django | Высокая | Высокая |
Базы данных | Oracle, MySQL, SQlite, PostgreSQL, сторонние серверы: ODBC, Firebird, IMB DB2, SAP SQL, Anywhere, Microsoft SQL Server | SQL and NoSQL databases, Zope Object Databases | MySQL, SQlite, PostgreSQL, SQL | SQlite, PostgreSQL, MySQL | MySQL, SQlite, PostgreSQL |
В этой статье мы разобрали, что такое Python и почему он является отличным выбором практически для любой задачи. Поговорили о таком фреймворке как Django, какие компании его используют и почему он — прекрасный вариант для веб-разработки.