Django 5 для начинающих

Прогресс по курсу:  9/1004

2.1 Что такое Django
1 из 3 шагов пройден
0 из 6 баллов  получено

Что такое 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
  • Reddit

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.


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

Понравилась задача, тест или урок? Поставьте лайк, поддержите курс. Ваша поддержка очень важна для нас.

@Илья_Перминов, если можно, добавьте обновление Django 5, упрощающее работу с шаблонами, насколько понимаю количество кода в разы уменьшается, было бы полезно.

@Фокс, Основное изменение шаблонов у Django 5, это вывод у форм полей и связанных с ним атрибутов. Мы это рассматриваем в этой лекции. Мы добавим в эту лекцию, как теперь в Django 5 можно легче выводить эти параметры. Но далее у проектов, мы не используем такую систему вывода форм, так как по мне она менее удобна.

Спасибо, Илья, что продолжили развивать данный курс, добавляя все новые и новые модули. Жму руку, снимаю шляпу.

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

@Нарбеков_Марсель, добавил ссылку со списком изменений, чуть позже добавлю основные моменты, один из которых - упрощённый вывод форм.