Python django чем хорош

Что такое Django и зачем это нужно

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

Для начала основные понятия. Если термины знакомы, пропускайте.

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

Веб-сервис отличается от обычной программы тем, что все вычисления происходят на сервере, а результат вычислений возвращается пользователям в виде веб-страницы. Когда вы задаёте вопрос Яндексу, этот вопрос улетает в огромный яндексовый дата-центр, там на основе огромного количества данных готовится ответ, и он прилетает вам в виде компактной простой странички.

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

Один из популярных языков веб-приложений — PHP. Его недолюбливают, но на нём сделана существенная часть веб-сервисов. Прочитайте о PHP в нашей статье.

Другой язык, набравший популярность в конце 2010-х — Python.

Читайте также:  Введение в си шарп

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

Что такое Django

Django — это фреймворк для быстрой разработки сайтов и приложений на Python. Это значит, что с ним можно будет собрать готовый сайт или веб-приложение быстрее, проще и аккуратнее, чем писать весь код самому с нуля. Для этого разработчику сразу доступно такое:

  • встроенный веб-сервер, чтобы не ставить его отдельно;
  • механизмы авторизации пользователей;
  • подключение и работа с базами данных;
  • шаблоны страниц и простых веб-интерфейсов;
  • простые способы выводить, наполнять, шаблонизировать и автоматизировать отдачу веб-страниц;
  • встроенная система кеширования, чтобы снизить нагрузку на сайт;
  • мультиязычность, когда на сайте есть переключатель языков.

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

Встроенная панель управления

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

В панели управления сайтом можно:

  • настраивать структуру сайта;
  • управлять пользователями;
  • работать с фильтрами и выгрузить все необходимые данные;
  • поправить код и сразу увидеть изменения на сайте;
  • работать с базой данных сайта;
  • смотреть статистику.

Так как админка тоже написана на Python, то её можно тоже оптимизировать или переделать под задачи проекта. В этом сила Django — зная Python, вы можете настроить что угодно и как угодно.

Что такое Django и зачем это нужно Что такое Django и зачем это нужно Что такое Django и зачем это нужно

Как работает Django

Работа Django основана на модели MVT — Model-View-Template, что переводится на русский как «Модель — Представление — Шаблон». Смысл этой модели в том, чтобы разделить логику работы сайта, внешний вид страниц и реакции на действия пользователей.

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

Представление занимается тем, что подготавливает данные, которые должен увидеть пользователь, и отправляет их в нужные места, например в шаблоны. Ещё задача представления — принимать запросы от пользователя и как-то на них реагировать, например что-то делать после нажатия разных кнопок на сайте.

Шаблон — это каркас HTML-страницы, который потом можно наполнить разным контентом. В шаблонах обычно прописывают типовые страницы, экраны и элементы, с которыми работает пользователь. Например, вот пример шаблона, который выведет все лучшие спортивные команды сезона (которые возьмёт из массива best_teams ):

Плюсы фреймворка

Скорость разработки. Django с самого начала создавался как фреймворк для быстрой сборки. За пару дней реально собрать на нём рабочую версию сайта, протестировать её и сразу понять, что делать дальше.

Масштабирование. В Django почти всё основано на модулях. Если нужно расширить сайт или масштабироваться под посещение миллиона человек в день, то можно просто одни модули заменить другими. Другие модули при этом даже не заметят, что на сайте что-то поменялось.

Безопасность. В Django встроено много готовых решений для безопасной работы: система аутентификации, защита от инъекций кода, межсайтовых запросов, подмены заголовка хоста и от других потенциальных уязвимостей.

Библиотеки и расширения. Если чего-то нет в Django — это можно поставить отдельной библиотекой: новую админку, плагин для работы с биометрическими данными или валидатор полей в формах.

Когда лучше без Django

Django хорош, когда вам нужно собрать большой сайт со множеством возможностей. Если же вы хотите просто вести блог или сделать себе сайт с портфолио, лучше выбрать что попроще: установить Вордпресс или собрать всё на Бутстрапе.

Что написано на Django

Сейчас на Django работает много популярных проектов, например:

  • YouTube;
  • Google (для вывода результатов по шаблону);
  • Dropbox;
  • Quora;
  • Mozilla;
  • Spotify;
  • Reddit.

Django можно использовать везде, где есть большая база данных и много пользователей.

С чего начать

Если любите изучать всё в первоисточнике — сходите на официальный сайт Django.

Если нужна вся документация на русском — почитайте django.fun или на сайте разработчиков Mozilla.

Если хотите попробовать Django в деле без установки на свой компьютер — используйте онлайн-версию.

Источник

Плюсы и минусы Django

Прим. перев.: Эта статья рассчитана в основном на тех кто только выбирает фреймворк для веб-разработки. Опытные разработчики на Django вряд ли узнают что-то новое.

Django описывают как «веб-фреймворк для перфекционистов с дедлайнами». Его создали, чтобы переходить от прототипов к готовым сервисам как можно быстрее.

Фреймворк поможет разработать CRUD приложение под ключ. С Django не придется изобретать велосипед. Он работает из коробки и позволит сосредоточиться на бизнес-логике и продуктах для обычных людей.

Плюсы Джанго

Принцип «Всё включено» («Batteries included»)

Фраза «всё включено» означает, что большинство инструментов для создания приложения — часть фреймворка, а не поставляются в виде отдельных библиотек.

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

  • ORM
  • Миграции базы данных
  • Аутентификация пользователя
  • Панель администратора
  • Формы

Стандартизированная структура

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 продолжает обрастать возможностями.

Источник

Оцените статью