Автор(ы): Андрей Кудлай - webformyself
Овладев фреймворком Django, вы сможете создавать сайты любого типа и любой сложности, поскольку данный фреймворк хорошо подходит для разработки масштабируемых и высоконагруженных проектов. Вы сможете создавать как простые сайты-визитки или блоги, так и большие интернет-магазины и порталы.
Django — это веб-фреймворк на Python, предназначенный для высоконадежной и динамичной разработки веб-сайтов.
Эта веб-платформа предназначена для создания масштабируемых веб-приложений или веб-сайтов с постоянно растущей аудиторией. Django отлично работает как есть и предоставляет пользователям ряд возможностей для создания веб-приложений на основе Python, включая панель пользователя, различные базы данных (SQLite, PostgreSQL, MySQL), функции администратора и многое другое.
Django как одна из лучших платформ для веб-разработки позволяет создавать сложные веб-приложения, которые могут обрабатывать большой трафик и огромные объемы информации. У него также есть многочисленные пакеты с дополнительными инструментами, чтобы продвинуть передовую технологию, такую как анализ данных и машинное обучение.
Django может лучше всего подойти практически для любой бизнес-идеи, независимо от того, какой это тип программного проекта.
Первая часть курса посвящена исключительно изучению Django и его возможностей. Поскольку Django – это фреймворк для Python, соответственно, для успешного изучения фреймворка вам необходимы знания и навыки работы с языком программирования Python.
В уроках первой части вы найдете всю необходимую базу для понимания принципов работы с Django и для дальнейшего самостоятельного изучения этого фреймворка. Фактически, данная часть курса является необходимым фундаментом для дальнейшего изучения и работы с Django.
Из уроков первой части вы узнаете, как установить и настроить Django и необходимое для работы виртуальное окружение, что такое приложения в Django, как реализован во фреймворке паттерн MVC и в чем его отличие от классического понимания MVC. Много уроков отведено под такие темы, как: ORM, работа с формами, работа с контроллерами-классами и контроллерами-функциями и т.д.
В первом уроке курса рассмотрены организационные моменты, структура и содержание курса. Из урока вы узнаете об основных источниках документации, о фреймворке Django, а также необходимых программах для дальнейшей работы.
Из данного урока вы узнаете о том, что такое виртуальное окружение и чем оно может быть полезно при работе с Django. Суть его заключается в следующем: мы одновременном можем работать с разными проектами на разных версиях Django. Также для той или иной версии фреймворка могут быть использованы разные версии одних и тех же пакетов. Если попытаться установить все это глобально, тогда вероятны конфликты и несовместимость версий. Разрешить эту проблему как раз и поможет виртуальное окружение, использование которого является рекомендуемым способом работы с Django.
В данном уроке будет показан процесс установки Django. Это будет версия Django 3, которая устанавливается не сложнее любого другого пакета для Python с помощью системы управления пакетами – PIP.
В данном уроке будет создано необходимое для работы приложение. Django работает именно с приложениями и каждую часть сайта можно описать в виде приложений. Это может быть приложение для работы со статьями блога, приложение для работы с товарами интернет-магазина и т.д. Таких приложений может быть сколь угодно много, но как минимум одно приложение для работы сайта необходимо. Это очень удобно и фактически каждое приложение является отдельным модулем, в идеале не связанным с другими приложениями. Таким образом, появляется возможность обмениваться приложениями с другими проектами, просто перенося папку приложения из одного проекта в другой.
Django, как и любой другой современный веб-фрейворк, реализует архитектурный паттерн MVC, который позволяет отделить логику работы приложения от его представления. Реализация данного паттерна в Django аналогична классической реализации паттерна, однако, есть некоторые терминологические отличия. Из этого урока вы узнаете о принципах работы MVC, а также о его нюансах в Django.
Когда мы набираем адрес любой страницы сайта и отправляем запрос на сервер, этот адрес сравнивается с имеющимися шаблонами маршрутов и, если совпадение будет найдено, тогда поступивший запрос передается на обработку в соответствующий маршруту контроллер. Из урока вы узнаете, как работать с маршрутами и контроллерами в Django.
Еще одним ключевым компонентом паттерна MVC, наравне с контроллерами, являются модели. Именно модели отвечают за работу с данными, за работу с хранилищем данных, чаще всего этого СУБД. Основная задача модели в Django – описать структуру сущности, на основе которой будут созданы соответствующие таблицы в БД. Кроме того, модели выполняют и ряд других важных задач, например, валидация данных, связанные задачи с построением HTML-форм и т.д.
После создания моделей, которые, прежде всего, описывают структуру будущих таблиц в БД для хранения данных, пришло время создать эти самые таблицы. Для этого совсем не нужно создавать их вручную, все сделает за нас Django. Таблицы будут созданы благодаря миграциям, которые создаются на основе моделей. Миграции являются чем-то вроде системой контроля версий для БД проекта и позволяют быстро и просто развернуть БД на новом окружении..
После создания таблиц в БД можно попробовать сохранить тестовые данные в базу данных и затем получить эти данные. Для этого Django предлагает просто великолепную ORM, используя которую можно забыть о написании SQL-запросов, их фреймворк будет формировать самостоятельно, на методах модели, которые будут вызваны для работы с данными.
В данной паре уроков вы увидите работу с этими методами и простейшие варианты манипулирования данными.
Последним компонентом паттерна MVC является представление, в терминологии Django речь идет о шаблонах. По сути шаблоны – это обычные файлы html, в которых можно использовать возможности шаблонизатора Django.
Еще одной потрясающей фичей в Django является его админка. В отличие от других веб-фреймворков, Django имеет админку из коробки, т.е. писать не нужно. Может возникнуть вопрос: а как же будут работать приложения проекта? Очень просто – Django добавит их в админку сам после их регистрации, и администратор будет иметь возможность управлять содержимым этих приложений: статьями, категориями, товарами и т.д.
Как и в любом другом современном фреймворке, в Django имеется механизм связей. Благодаря данному механизму можно очень просто связать между собой различные сущности, например, статьи и рубрики или статьи и метки. При этом работать с созданными связями проще простого: достаточно описать связь в модели, а дальше Django сам создаст нужную связь и дополнительные таблицы при необходимости.
В этом уроке вы увидите, как можно быстро и просто подключить CSS-фреймворк Bootstrap к шаблону и получить более-менее приятный вид для дальнейшей работы.
В следующих двух уроках вы больше узнаете о работе с шаблонизатором Django, а также о таких его составляющих, как директивы, теги и фильтры. Благодаря им можно выводить данные, полученные от контроллера, а также манипулировать этими данными и дополнительно обрабатывать их при необходимости.
Директивы, теги и фильтры.
Данный урок будет посвящен уже знакомой теме маршрутов, в частности, вы узнаете, как передавать дополнительные параметры url в запросах, а также как их принимать в маршрутах и контроллерах.
При определении маршрутов им можно давать имена, получая таким образом именованные маршруты. Благодаря этому, в других частях кода в дальнейшем можно не вспоминать требуемый формат ссылки, а просто использовать имя маршрута – Django сам сформирует ссылку на основе переданного имени маршрута.
Шаблонизатор Django поддерживает такой удобный механизм, как наследование шаблонов. Благодаря этому, можно определить некий базовый шаблон, а все прочие шаблоны приложений будут его наследовать и дополнять (расширять). Эта возможность значительно упростит работу с шаблонами и позволит вносить гораздо меньше правок в их код при необходимости.
В этом уроке будет показана еще одна полезная возможность, которую предлагает Django – т.н. обратное разрешение адресов. Эта возможность тесно связана с маршрутами и предназначена для формирования ссылок на отдельные экземпляры модели.
В терминологии Django присутствует такое понятие, как статические файлы. По сути, статика – это все подключаемые к шаблону файлы: css, js, изображения. Работа со статикой имеет некоторые нюансы в Django, о которых вы и узнаете из предлагаемого видео.
В терминологии Django присутствует такое понятие, как статические файлы. По сути, статика – это все подключаемые к шаблону файлы: css, js, изображения. Работа со статикой имеет некоторые нюансы в Django, о которых вы и узнаете из предлагаемого видео.
Формы являются неотъемлемым атрибутом практически любого сайта. Это могут быть самые разные формы: формы регистрации и авторизации, контактная форма, форма добавления статьи и т.д.
Здесь нужно позаботиться не только о создании самой формы с нужным набором полей, но и о ее безопасности, а также о валидации данных. Все это уже предусмотрено в Django и в следующих трех уроках будут показаны различные варианты создания и работы с формами.
Из предлагаемых уроков вы узнаете о том, что такое связанная и не связанная форма, о формах, основанных на модели, о способах стилизации форм и т.д.
Django имеет целый ряд классов-валидаторов, которые проверяют данные на основе заданных правил. Однако, если вам недостаточно существующих валидаторов и нужные
До этого урока в контроллерах определялись функции, которые принято называть функции-контроллеры. Однако, Django предлагает также и возможность написания контроллеров в стиле ООП – объектно-ориентированного программирования. Для этого существует целый ряд классов, от которых можно наследоваться и описывать логику контроллера. Класс ListView предназначен для работы с массивами данных, например, со списком статей. Возможности данного класса и будут рассмотрены в следующей паре уроков.
Класс ListView предназначен для работы с массивами данных, например, со списком статей.
Класс DetailView предназначен для работы с одним экземпляром модели, например, для показа одной статьи. Из урока вы узнаете, как можно использовать данный класс в контроллере.
Класс CreateView предназначен для создания экземпляра модели, например, для создания статьи и сохранения ее в базу данных. Из урока вы узнаете, как можно использовать данный класс в контроллере.
Django может работать с самыми разными СУБД. Из коробки фреймворк работает с SQLite. Это достаточно специфичная СУБДб она идеально подходит для учебных проектов и даже для небольших реальных проектов. Однако, для более-менее посещаемых сайтов уже лучше использовать что-то другое, например, MySQL.
В этом уроке вы узнаете, как можно подключить к проекту СУБД MySQL и с какими сложностями при этом можно столкнуться.
Как уже отмечалось в предыдущих уроках, Django может работать с самыми разными СУБД. Из коробки фреймворк использует SQLite, однако к проекту можно подключить такие СУБД, как: MySQL, PostgreSQL, MariaDB, Oracle и ряд других. Каждая из СУБД может иметь свои нюансы работы с SQL-запросами.
Однако, благодаря имеющейся в Django ORM, нам не нужно задумываться об этих нюансах. Собственно, нам даже не обязательно знать язык запросов SQL, поскольку ORM предлагает целый ряд методов для получения данных и работы с БД. Это действительно мощная штука и именно поэтому для знакомства с ORM было отведено следующие 7 уроков.
продаолжаем изучать Django ORM.
продoлжаем изучать Django ORM.
продoлжаем изучать Django ORM.
продoлжаем изучать Django ORM.
продoлжаем изучать Django ORM.
продoлжаем изучать Django ORM.
При разработке проекта важно следить за его оптимизацией. Согласитесь, будет не очень хорошо, если готовый проект будет для показа одной страницы формировать десятки SQL-запросов. Для этого нужен какой-либо инструмент отладки.
В этом уроке будет установлен пакет Django Debug Toolbar, с помощью которого отлаживать разрабатываемый проект и следить за его оптимизацией будет куда проще.
Как уже отмечалось, Django имеет готовую админку. Для реальных проектов может возникнуть необходимость ее кастомизации, изменения ее оформления под стиль разрабатываемого сайта. Как это сделать – вы узнаете из данного урока.
Когда для контроллеров используются возможности ООП – это дает дополнительные возможности для того, чтобы избегать дублирования кода, что является ключевым принципом философии Django. Чтобы избегать дублирования кода можно использовать так называемые миксины (примеси).
В следующих двух уроках вы узнаете о том, как использовать постраничную навигацию для ваших проектов. Для этого Django предлагает специальный класс, работа с которым и будет показана в данных уроках.
продолжение Постраничная навигация. Часть 2
Одним из стандартных компонентов веб-приложений является регистрация и авторизация пользователей. В следующих двух уроках вы увидите, как реализовать механизм регистрации на сайте.
продолжение Регистрация. Часть 2
В данном уроке вы найдете реализацию механизма авторизации зарегистрированных пользователей на сайте. С помощью Django данный функционал реализуется просто и быстро.
продаолжаем изучать Django ORM.
В этом уроке будет рассмотрен еще один из ключевых функционалов любого сайта – отправка писем на email. Django умеет отправлять как одиночные письма, так и делать рассылку писем при необходимости. Из урока вы узнаете, как можно реализовать отправку писем на электронную почту.
В админке для редактирования контента представлены формы. Если необходимо, скажем, редактировать текст статьи, тогда в качестве поля формы будет представлена текстовая область, в которой администратор может набирать текст статьи. Недостатком здесь является тот факт, что статья представлена зачастую не просто текстом, но текстом форматированным, а также изображениями, которые могут сопровождать данный текст. Для того, чтобы полноценно писать такой текст принято использовать визуальные редакторы. В уроке будет показано, как установить и настроить визуальный редактор CKEditor.
В данном уроке будет показана установка и настройка пакета, предлагающего базовый вариант капчи для защиты форм сайта от спама.
Последний урок первой части курса будет посвящен теме кэширования. Django предлагает целый ряд вариантов работы с кэшем. Благодаря использованию механизма кэширования можно значительно снизить нагрузку на проект, сократив количество выполняемых SQL-запросов, а также работу с данными в контроллере и шаблонах.
Часть 2. Практика создания сайта с Django
Вторая часть курса будет посвящена повторению и закреплению пройденного в первой части материала. Во второй части полученные знания будут применены на практике.
В качестве практики создается современный блог, предполагающий следующий функционал:
поиск и многое другое…
В данном уроке будет выполнена вся необходимая подготовка для дальнейшего создания сайта: будет установлено виртуальное окружение, установлен фреймворк Django и создан проект для дальнейшей работы.
На главной странице сайта выводится, как правило, список последних статей блога. В данном уроке будет создано приложение и контроллер данного приложения, который будет работать с главной страницей сайта.
Задачей текущего урока будет перенос имеющегося HTML-шаблона в структура фреймворка, в созданный ранее проект. По итогу урока при обращении к главной странице сайта мы должны увидеть пока что статичную, но уже картину, которая соответствует исходному HTML-шаблону со всеми подключенными стилями, скриптами и прочими статическими файлами.
В текущем уроке будут созданы все необходимые ключевые модели проекта – это модель категорий, статей и тегов. При этом в моделях будут описаны все необходимые связи между моделями, в частности связь один ко многим (one to many) для связи статей и категорий и связь многие ко многим (many to many) для связи статей и тегов.
В данном уроке будут зарегистрированы созданные модели в админке сайта и после этого уже можно будет заняться наполнением сайта: созданием рубрик, статей, тегов.
В текущем уроке будет произведена настройка приложений в админке с тем, чтобы администратор мог видеть все необходимые ему данные для управления контентом, а также для того, чтобы администрировать контент было удобнее и приятнее.
В текущем уроке будет создан собственный тег шаблона, задачей которого будет формирование меню. Поскольку меню присутствует на всех страницах сайта, есть смысл получать его единожды и использовать после этого многократно.
В данном уроке будет написан простой код на JavaScript, который позволит подсвечивать активный пункт в меню.
В текущем уроке будет реализован ключевой функционал главной страницы сайта – вывод списка последних статей. Благодаря Django эта задача решается очень быстро и просто.
На главной странице сайта выводится не просто несколько последних статей, но также выводится и постраничная навигация для просмотра следующих статей. В уроке будет добавлена необходимая пагинация.
Если на главной странице сайта выводятся статьи подряд, то при обращении к той или иной рубрике нам необходимо показывать статьи именно выбранной рубрики. В текущем уроке будет реализована данная возможность.
После вывода списков статей пришла очередь показа отдельной статьи. Для этого будут созданы нужный маршрут, контроллер и шаблон.
К статьям могут быть привязаны теги (метки) и при выборе на сайте того или иного тега нам необходимо показывать список статей, которые связаны с выбранным тегом. По сути, это аналог привязки статьи к категории с той лишь разницей, что одна статья может принадлежать одной рубрике, а вот тегов к одной статье может быть привязано сколько угодно. В уроке будет показана реализация показа статей по тегу.
В текущем уроке будет показана реализация функционала вывода списка популярных постов в сайдбаре сайта. Популярность будет рассчитываться на основе количества просмотра статей.
Еще одним типовым функционалом блога является облако меток. В данном уроке будет написан еще один пользовательский тег шаблона для показа облака тегов сайта.
В данном уроке будет реализован поиск по сайту. Поиск должен показывать список найденных статей с возможной пагинацией. При этом пагинация в данном случае будет иметь один нюанс, который и будет решен в уроке.
Создаваемый блог имеет одноуровневое меню категорий. Однако, на практике часто мы имеем дело с многоуровневыми меню. Поэтому желательно знать, как можно реализовать такое меню в Django. В следующих трех уроках будет показана реализация многоуровневого меню.
продолжение Многоуровневое меню
продолжение Многоуровневое меню
Одной из головных болей разработчика сайтов на Django может стать перенос проекта на сервер. По сравнению, скажем, с проектами на PHP, деплой проектов на Django выглядит гораздо сложнее и проблематичнее. В следующей паре уроков будет показан один из возможных вариантов переноса проекта на сервер.
Деплой проекта на хостинг. Часть 2
В заключительном уроке будет подытожена проделанная работа на протяжении всего курса по изучению фреймворка Django.