Это статья об очень популярном фреймворке, на котором сейчас делают множество веб-сервисов, приложений и систем. Статья будет полезна тем, кто немного разбирается в вебе и хочет погрузиться глубже.
Для начала основные понятия. Если термины знакомы, пропускайте.
Веб-сервис или веб-приложение — это программа, которая делает что-то полезное через ваш браузер. Поиск Яндекса — это веб-сервис. Какой-нибудь онлайн-словарь или переводчик — тоже веб-сервис.
Веб-сервис отличается от обычной программы тем, что все вычисления происходят на сервере, а результат вычислений возвращается пользователям в виде веб-страницы. Когда вы задаёте вопрос Яндексу, этот вопрос улетает в огромный яндексовый дата-центр, там на основе огромного количества данных готовится ответ, и он прилетает вам в виде компактной простой странички.
Веб-сервисы используют какие-то внутренние языки: на серверах, которые обрабатывают ваши запросы, работают программы, которые обеспечивают все нужные вычисления. Эти программы написаны на каких-то языках. Некоторые языки лучше приспособлены для задач веб-приложений, другие похуже.
Один из популярных языков веб-приложений — PHP. Его недолюбливают, но на нём сделана существенная часть веб-сервисов. Прочитайте о PHP в нашей статье.
Другой язык, набравший популярность в конце 2010-х — Python.
Фреймворк — это надстройка над языком программирования, которая упрощает разработку. Внутри фреймворка собрано много готовых конструкций, которые программисту не нужно делать самому — вместо этого он использует команды фреймворка и сразу получает результат. Можно представить, что фреймворк — это набор полуфабрикатов, из которых можно приготовить блюдо.
Что такое Django
Django — это фреймворк для быстрой разработки сайтов и приложений на Python. Это значит, что с ним можно будет собрать готовый сайт или веб-приложение быстрее, проще и аккуратнее, чем писать весь код самому с нуля. Для этого разработчику сразу доступно такое:
- встроенный веб-сервер, чтобы не ставить его отдельно;
- механизмы авторизации пользователей;
- подключение и работа с базами данных;
- шаблоны страниц и простых веб-интерфейсов;
- простые способы выводить, наполнять, шаблонизировать и автоматизировать отдачу веб-страниц;
- встроенная система кеширования, чтобы снизить нагрузку на сайт;
- мультиязычность, когда на сайте есть переключатель языков.
Можно представить, что Django — это библиотека элементов, с помощью которых можно довольно быстро собрать работающее веб-приложение со сложной логикой. Тут авторизация, там вывод страниц, тут администраторская панель, тут запросы в базу данных — всё это соединяете, и за короткое время у вас всё работает.
Встроенная панель управления
Большой плюс Django в том, что в него встроена своя панель управления сайтом. Это значит, что разработчику не нужно писать свою админку — она уже доступна сразу после запуска сайта.
В панели управления сайтом можно:
- настраивать структуру сайта;
- управлять пользователями;
- работать с фильтрами и выгрузить все необходимые данные;
- поправить код и сразу увидеть изменения на сайте;
- работать с базой данных сайта;
- смотреть статистику.
Так как админка тоже написана на Python, то её можно тоже оптимизировать или переделать под задачи проекта. В этом сила Django — зная Python, вы можете настроить что угодно и как угодно.
Как работает Django
Работа Django основана на модели MVT — Model-View-Template, что переводится на русский как «Модель — Представление — Шаблон». Смысл этой модели в том, чтобы разделить логику работы сайта, внешний вид страниц и реакции на действия пользователей.
Модель отвечает за логику работы, методы, свойства объектов и то, как они взаимодействуют между собой. Например, как обращаться к базе данных, куда отправлять результаты и в каком формате это хранить.
Представление занимается тем, что подготавливает данные, которые должен увидеть пользователь, и отправляет их в нужные места, например в шаблоны. Ещё задача представления — принимать запросы от пользователя и как-то на них реагировать, например что-то делать после нажатия разных кнопок на сайте.
Шаблон — это каркас HTML-страницы, который потом можно наполнить разным контентом. В шаблонах обычно прописывают типовые страницы, экраны и элементы, с которыми работает пользователь. Например, вот пример шаблона, который выведет все лучшие спортивные команды сезона (которые возьмёт из массива best_teams
):
## filename: best/templates/best/index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Home page</title>
</head>
<body>
{% if best_teams %}
<ul>
{% for team in best_teams %}
<li>{{ team.team_name }}</li>
{% endfor %}
</ul>
{% else %}
<p>No teams are available.</p>
{% endif %}
</body>
</html>
Плюсы фреймворка
Скорость разработки. Django с самого начала создавался как фреймворк для быстрой сборки. За пару дней реально собрать на нём рабочую версию сайта, протестировать её и сразу понять, что делать дальше.
Масштабирование. В Django почти всё основано на модулях. Если нужно расширить сайт или масштабироваться под посещение миллиона человек в день, то можно просто одни модули заменить другими. Другие модули при этом даже не заметят, что на сайте что-то поменялось.
Безопасность. В Django встроено много готовых решений для безопасной работы: система аутентификации, защита от инъекций кода, межсайтовых запросов, подмены заголовка хоста и от других потенциальных уязвимостей.
Библиотеки и расширения. Если чего-то нет в Django — это можно поставить отдельной библиотекой: новую админку, плагин для работы с биометрическими данными или валидатор полей в формах.
Когда лучше без Django
Django хорош, когда вам нужно собрать большой сайт со множеством возможностей. Если же вы хотите просто вести блог или сделать себе сайт с портфолио, лучше выбрать что попроще: установить Вордпресс или собрать всё на Бутстрапе.
Что написано на Django
Сейчас на Django работает много популярных проектов, например:
- YouTube;
- Google (для вывода результатов по шаблону);
- Dropbox;
- Quora;
- Mozilla;
- Spotify;
- Reddit.
Django можно использовать везде, где есть большая база данных и много пользователей.
С чего начать
Если любите изучать всё в первоисточнике — сходите на официальный сайт Django.
Если нужна вся документация на русском — почитайте django.fun или на сайте разработчиков Mozilla.
Если хотите попробовать Django в деле без установки на свой компьютер — используйте онлайн-версию.