Что такое Django и зачем это нужно
Этот раздел об очень популярном фреймворке, на котором сейчас делают множество веб-сервисов, приложений и систем.
Для начала основные понятия.
Веб-сервис или веб-приложение — это программа, которая делает что-то полезное через ваш браузер. Поиск Яндекса — это веб-сервис. Какой-нибудь онлайн-словарь или переводчик — тоже веб-сервис.
Веб-сервис отличается от обычной программы тем, что все вычисления происходят на сервере, а результат вычислений возвращается пользователям в виде веб-страницы. Когда вы задаёте вопрос Яндексу, этот вопрос улетает в огромный яндексовый дата-центр, там на основе огромного количества данных готовится ответ, и он прилетает вам в виде компактной простой странички.
Веб-сервисы используют какие-то внутренние языки: на серверах, которые обрабатывают ваши запросы, работают программы, которые обеспечивают все нужные вычисления. Эти программы написаны на каких-то языках. Некоторые языки лучше приспособлены для задач веб-приложений, другие похуже.
Фреймворк — это надстройка над языком программирования, которая упрощает разработку. Внутри фреймворка собрано много готовых конструкций, которые программисту не нужно делать самому — вместо этого он использует команды фреймворка и сразу получает результат. Можно представить, что фреймворк — это набор полуфабрикатов, из которых можно приготовить блюдо.
Немного истории...
Разработка фреймворка Django началась в 2003 году как проект, выполненный Адрианом Холовати и Саймоном Уиллисоном в газете Journal-World в Лоуренсе, Канзас-Сити, США. В 2005 году Холовати и Уиллисон выпустили первую публичную версию фреймворка, назвав его в честь бельгийско-французского гитариста Джанго Рейнхардта.
В 2022 году фреймворк Django работает под руководством Django software foundation (DSF), ядро фреймворка насчитывает более тысячи участников, он был выпущен в четырех основных версиях с сотнями второстепенных версий, и существует более трех тысяч пакетов, специально разработанных для работы с фреймворком Django, которые вы можете посмотреть на https://djangopackages.org/
Фреймворк Django остался верен своему происхождению как серверный фреймворк Model-View-Controller (MVC), предназначенный для работы с реляционными базами данных. Тем не менее, Django не отстает от большинства тенденций веб-разработки - в основном с помощью пакетов сторонних разработчиков - чтобы работать вместе с такими технологиями, как не реляционные базы данных (NoSQL), интернет-коммуникации в реальном времени (например, WebSockets, потоковая передача данных) и современные методы JavaScript. Все это к тому, что фреймворк Django сегодня является предпочтительной основой веб-разработки для широкого круга организаций, поддерживая множество высококлассных сайтов и приложений.
В этом разделе вы узнаете о принципах проектирования фреймворка Django, которые являются ключевыми для понимания повседневных аспектов работы с фреймворком Django. Также мы поговорим об основных строительных блоках фреймворка Django - урлах, шаблонах и приложениях - и о том, как они работают друг с другом для создания контента. Наконец, вы узнаете, как настроить сайт администратора Django, который представляет собой веб-интерфейс, предназначенный для доступа к реляционной базе данных, подключенной к проекту Django.
Что такое Django
Django — это фреймворк для быстрой разработки сайтов и приложений на Python. Это значит, что с ним можно будет собрать готовый сайт или веб-приложение быстрее, проще и аккуратнее, чем писать весь код самому с нуля. Для этого разработчику сразу доступно такое:
- встроенный веб-сервер, чтобы не ставить его отдельно;
- механизмы авторизации пользователей;
- подключение и работа с базами данных;
- шаблоны страниц и простых веб-интерфейсов;
- простые способы выводить, наполнять, шаблонизировать и автоматизировать отдачу веб-страниц;
- встроенная система кеширования, чтобы снизить нагрузку на сайт;
- мультиязычность, когда на сайте есть переключатель языков.
Можно представить, что Django — это библиотека элементов, с помощью которых можно довольно быстро собрать работающее веб-приложение со сложной логикой. Тут авторизация, там вывод страниц, тут администраторская панель, тут запросы в базу данных — всё это соединяете, и за короткое время у вас всё работает.
Встроенная панель управления
Большой плюс Django в том, что в него встроена своя панель управления сайтом. Это значит, что разработчику не нужно писать свою админку — она уже доступна сразу после запуска сайта.
В панели управления сайтом можно:
- настраивать структуру сайта;
- управлять пользователями;
- работать с фильтрами и выгрузить все необходимые данные;
- поправить код и сразу увидеть изменения на сайте;
- работать с базой данных сайта;
- смотреть статистику.
Так как админка тоже написана на Python, то её можно тоже оптимизировать или переделать под задачи проекта. В этом сила Django — зная Python, вы можете настроить что угодно и как угодно.
Плюсы фреймворка
Скорость разработки. Django с самого начала создавался как фреймворк для быстрой сборки. За пару дней реально собрать на нём рабочую версию сайта, протестировать её и сразу понять, что делать дальше.
Масштабирование. В Django почти всё основано на модулях. Если нужно расширить сайт или масштабироваться под посещение миллиона человек в день, то можно просто одни модули заменить другими. Другие модули при этом даже не заметят, что на сайте что-то поменялось.
Безопасность. В Django встроено много готовых решений для безопасной работы: система аутентификации, защита от инъекций кода, межсайтовых запросов, подмены заголовка хоста и от других потенциальных уязвимостей.
Библиотеки и расширения. Если чего-то нет в Django — это можно поставить отдельной библиотекой: новую админку, плагин для работы с биометрическими данными или валидатор полей в формах.
Что написано на Django
Сейчас на Django работает много популярных проектов, например:
- YouTube
- Google (для вывода результатов по шаблону)
- Dropbox
- Quora
- Mozilla
- Spotify
Django можно использовать везде, где есть большая база данных и много пользователей.
Новые функции в Django 4
Django 4 представляет набор новых функций безвозвратно устраняя старые функциональные возможности. Поскольку Django 4 вышел недавно в нем нет кардинальных изменений, и приложения Django 3 легко перенести в версию 4.2.
В Django 4.0 добавили: поддержку кэширования данных с помощью Redis, новую реализацию часового пояса с использованием стандартного пакета Python zoneinfo, новый механизм шифрования паролей, шаблон-рендеринг на основе форм, а также другие новые второстепенные функции.
Django 4.0 перестал поддерживать Python 3.6 и 3.7. Он также прекращает поддержку PostgreSQL 9.6, Oracle 12.2 и Oracle 18c.
Django 4.1 вводит асинхронные обработчики для представлений на основе классов, асинхронный интерфейс ORM, новую проверку ограничений модели и новые шаблоны для рендеринга форм.
Django 4.1 прекращает поддержку PostgreSQL 10 и MariaDB 10.2.
В Django 4.2 добавлена поддержка psycopg версии 3.1.8 и выше.
В Django 4.2 добавлена поддержка комментариев в столбцах и таблицах БД.
Полный список изменений в версиях по ссылкам: Django 4.0, Django 4.1, Django 4.2, Django 5.0.