Видеокурс "Django. Полное руководство". (Андрей Кудлай - webformyself)

Это электронный видеокурс
200
Видеокурс

Полная информация

  • Автор(ы): Андрей Кудлай - webformyself

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

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

    Эта веб-платформа предназначена для создания масштабируемых веб-приложений или веб-сайтов с постоянно растущей аудиторией. Django отлично работает как есть и предоставляет пользователям ряд возможностей для создания веб-приложений на основе Python, включая панель пользователя, различные базы данных (SQLite, PostgreSQL, MySQL), функции администратора и многое другое.

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

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

    • Часть 1. Изучение Django

    Первая часть курса посвящена исключительно изучению Django и его возможностей. Поскольку Django – это фреймворк для Python, соответственно, для успешного изучения фреймворка вам необходимы знания и навыки работы с языком программирования Python.

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

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

    • Урок 1. Введение

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

    • Урок 2. Установка виртуального окружения

    Из данного урока вы узнаете о том, что такое виртуальное окружение и чем оно может быть полезно при работе с Django. Суть его заключается в следующем: мы одновременном можем работать с разными проектами на разных версиях Django. Также для той или иной версии фреймворка могут быть использованы разные версии одних и тех же пакетов. Если попытаться установить все это глобально, тогда вероятны конфликты и несовместимость версий. Разрешить эту проблему как раз и поможет виртуальное окружение, использование которого является рекомендуемым способом работы с Django.

    • Урок 3. Установка Django

    В данном уроке будет показан процесс установки Django. Это будет версия Django 3, которая устанавливается не сложнее любого другого пакета для Python с помощью системы управления пакетами – PIP.

    • Урок 4. Приложения в Django

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

    • Урок 5. MVC в Django

    Django, как и любой другой современный веб-фрейворк, реализует архитектурный паттерн MVC, который позволяет отделить логику работы приложения от его представления. Реализация данного паттерна в Django аналогична классической реализации паттерна, однако, есть некоторые терминологические отличия. Из этого урока вы узнаете о принципах работы MVC, а также о его нюансах в Django.

    • Урок 6. Контроллеры и маршруты

    Когда мы набираем адрес любой страницы сайта и отправляем запрос на сервер, этот адрес сравнивается с имеющимися шаблонами маршрутов и, если совпадение будет найдено, тогда поступивший запрос передается на обработку в соответствующий маршруту контроллер. Из урока вы узнаете, как работать с маршрутами и контроллерами в Django.

    • Урок 7. Модели

    Еще одним ключевым компонентом паттерна MVC, наравне с контроллерами, являются модели. Именно модели отвечают за работу с данными, за работу с хранилищем данных, чаще всего этого СУБД. Основная задача модели в Django – описать структуру сущности, на основе которой будут созданы соответствующие таблицы в БД. Кроме того, модели выполняют и ряд других важных задач, например, валидация данных, связанные задачи с построением HTML-форм и т.д.

    • Урок 8. Миграции

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

    • Урок 9. Основы работы с моделями. CRUD. Часть 1
    • Уроки 9-10. Основы работы с моделями. CRUD. Части 1-2

    После создания таблиц в БД можно попробовать сохранить тестовые данные в базу данных и затем получить эти данные. Для этого Django предлагает просто великолепную ORM, используя которую можно забыть о написании SQL-запросов, их фреймворк будет формировать самостоятельно, на методах модели, которые будут вызваны для работы с данными.

    • Урок 10. Основы работы с моделями. CRUD

    В данной паре уроков вы увидите работу с этими методами и простейшие варианты манипулирования данными.

    • Урок 11. Шаблоны

    Последним компонентом паттерна MVC является представление, в терминологии Django речь идет о шаблонах. По сути шаблоны – это обычные файлы html, в которых можно использовать возможности шаблонизатора Django.

    • Урок 12. Админка Django

    Еще одной потрясающей фичей в Django является его админка. В отличие от других веб-фреймворков, Django имеет админку из коробки, т.е. писать не нужно. Может возникнуть вопрос: а как же будут работать приложения проекта? Очень просто – Django добавит их в админку сам после их регистрации, и администратор будет иметь возможность управлять содержимым этих приложений: статьями, категориями, товарами и т.д.

    • Урок 13. Связи моделей

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

    • Урок 14. Внешний вид шаблона

    В этом уроке вы увидите, как можно быстро и просто подключить CSS-фреймворк Bootstrap к шаблону и получить более-менее приятный вид для дальнейшей работы.

    • Урок 15. Директивы, теги и фильтры. Часть 1
    • Уроки 15-16. Директивы, теги и фильтры. Части 1-2

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

    • Урок 16. Active Record. Часть 2

    Директивы, теги и фильтры.

    • Урок 17. Параметры URL в запросах

    Данный урок будет посвящен уже знакомой теме маршрутов, в частности, вы узнаете, как передавать дополнительные параметры url в запросах, а также как их принимать в маршрутах и контроллерах.

    • Урок 18. Имена маршрутов

    При определении маршрутов им можно давать имена, получая таким образом именованные маршруты. Благодаря этому, в других частях кода в дальнейшем можно не вспоминать требуемый формат ссылки, а просто использовать имя маршрута – Django сам сформирует ссылку на основе переданного имени маршрута.

    • Урок 19. Наследование шаблонов

    Шаблонизатор Django поддерживает такой удобный механизм, как наследование шаблонов. Благодаря этому, можно определить некий базовый шаблон, а все прочие шаблоны приложений будут его наследовать и дополнять (расширять). Эта возможность значительно упростит работу с шаблонами и позволит вносить гораздо меньше правок в их код при необходимости.

    • Урок 21. Обратное разрешение адресов2

    В этом уроке будет показана еще одна полезная возможность, которую предлагает Django – т.н. обратное разрешение адресов. Эта возможность тесно связана с маршрутами и предназначена для формирования ссылок на отдельные экземпляры модели.

    • Урок 22. Статические файлы

    В терминологии Django присутствует такое понятие, как статические файлы. По сути, статика – это все подключаемые к шаблону файлы: css, js, изображения. Работа со статикой имеет некоторые нюансы в Django, о которых вы и узнаете из предлагаемого видео.

    • Урок 22. Статические файлы

    В терминологии Django присутствует такое понятие, как статические файлы. По сути, статика – это все подключаемые к шаблону файлы: css, js, изображения. Работа со статикой имеет некоторые нюансы в Django, о которых вы и узнаете из предлагаемого видео.

    • Урок 23. Работа с формами. Часть 1

    Формы являются неотъемлемым атрибутом практически любого сайта. Это могут быть самые разные формы: формы регистрации и авторизации, контактная форма, форма добавления статьи и т.д.

    • Урок 24.Работа с формами. Часть 2

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

    • Урок 25. Работа с формами. Часть 3

    Из предлагаемых уроков вы узнаете о том, что такое связанная и не связанная форма, о формах, основанных на модели, о способах стилизации форм и т.д.

    • Урок 26. Кастомные валидаторы

    Django имеет целый ряд классов-валидаторов, которые проверяют данные на основе заданных правил. Однако, если вам недостаточно существующих валидаторов и нужные

    • Уроки 27. Класс ListView. Части 1

    До этого урока в контроллерах определялись функции, которые принято называть функции-контроллеры. Однако, Django предлагает также и возможность написания контроллеров в стиле ООП – объектно-ориентированного программирования. Для этого существует целый ряд классов, от которых можно наследоваться и описывать логику контроллера. Класс ListView предназначен для работы с массивами данных, например, со списком статей. Возможности данного класса и будут рассмотрены в следующей паре уроков.

    • Уроки 28.Класс ListView. Часть 2

    Класс ListView предназначен для работы с массивами данных, например, со списком статей.

    • Урок 29. Класс DetailView

    Класс DetailView предназначен для работы с одним экземпляром модели, например, для показа одной статьи. Из урока вы узнаете, как можно использовать данный класс в контроллере.

    • Урок 30. Класс CreateView

    Класс CreateView предназначен для создания экземпляра модели, например, для создания статьи и сохранения ее в базу данных. Из урока вы узнаете, как можно использовать данный класс в контроллере.

    • Урок 31. Подключение MySQL

    Django может работать с самыми разными СУБД. Из коробки фреймворк работает с SQLite. Это достаточно специфичная СУБДб она идеально подходит для учебных проектов и даже для небольших реальных проектов. Однако, для более-менее посещаемых сайтов уже лучше использовать что-то другое, например, MySQL.

    В этом уроке вы узнаете, как можно подключить к проекту СУБД MySQL и с какими сложностями при этом можно столкнуться.

    • Уроки 32.Django ORM. Часть 1

    Как уже отмечалось в предыдущих уроках, Django может работать с самыми разными СУБД. Из коробки фреймворк использует SQLite, однако к проекту можно подключить такие СУБД, как: MySQL, PostgreSQL, MariaDB, Oracle и ряд других. Каждая из СУБД может иметь свои нюансы работы с SQL-запросами.

    • Урок 33. Django ORM. Часть 2

    Однако, благодаря имеющейся в Django ORM, нам не нужно задумываться об этих нюансах. Собственно, нам даже не обязательно знать язык запросов SQL, поскольку ORM предлагает целый ряд методов для получения данных и работы с БД. Это действительно мощная штука и именно поэтому для знакомства с ORM было отведено следующие 7 уроков.

    • Урок 34. Django ORM. Часть 3

    продаолжаем изучать Django ORM.

    • Урок 35. Django ORM. Часть 4

    продoлжаем изучать Django ORM.

    • Урок 36. Django ORM. Часть 5

    продoлжаем изучать Django ORM.

    • Урок 37.Django ORM. Часть 6

    продoлжаем изучать Django ORM.

    • Урок 38. Django ORM. Часть 7

    продoлжаем изучать Django ORM.

    • Урок 39 Django ORM. Часть 8

    продoлжаем изучать Django ORM.

    • Урок 40. Django Debug Toolbar

    При разработке проекта важно следить за его оптимизацией. Согласитесь, будет не очень хорошо, если готовый проект будет для показа одной страницы формировать десятки SQL-запросов. Для этого нужен какой-либо инструмент отладки.

    В этом уроке будет установлен пакет Django Debug Toolbar, с помощью которого отлаживать разрабатываемый проект и следить за его оптимизацией будет куда проще.

    • Урок 41. Кастомизация админки

    Как уже отмечалось, Django имеет готовую админку. Для реальных проектов может возникнуть необходимость ее кастомизации, изменения ее оформления под стиль разрабатываемого сайта. Как это сделать – вы узнаете из данного урока.

    • Урок 42. Миксины

    Когда для контроллеров используются возможности ООП – это дает дополнительные возможности для того, чтобы избегать дублирования кода, что является ключевым принципом философии Django. Чтобы избегать дублирования кода можно использовать так называемые миксины (примеси).

    • Уроки 43. Постраничная навигация. Часть 1

    В следующих двух уроках вы узнаете о том, как использовать постраничную навигацию для ваших проектов. Для этого Django предлагает специальный класс, работа с которым и будет показана в данных уроках.

    • Урок 44. Постраничная навигация. Часть 2

    продолжение  Постраничная навигация. Часть 2

    • Уроки 45. Регистрация. Часть 1

    Одним из стандартных компонентов веб-приложений является регистрация и авторизация пользователей. В следующих двух уроках вы увидите, как реализовать механизм регистрации на сайте.

    • Урок 46. Регистрация. Часть 2

    продолжение  Регистрация. Часть 2

    • Урок 47. Авторизация

    В данном уроке вы найдете реализацию механизма авторизации зарегистрированных пользователей на сайте. С помощью Django данный функционал реализуется просто и быстро.

    • Урок 35. Django ORM. Часть 4

    продаолжаем изучать Django ORM.

    • Урок 48. Отправка писем на Email

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

    • Урок 49. Визуальный редактор CKEditor

    В админке для редактирования контента представлены формы. Если необходимо, скажем, редактировать текст статьи, тогда в качестве поля формы будет представлена текстовая область, в которой администратор может набирать текст статьи. Недостатком здесь является тот факт, что статья представлена зачастую не просто текстом, но текстом форматированным, а также изображениями, которые могут сопровождать данный текст. Для того, чтобы полноценно писать такой текст принято использовать визуальные редакторы. В уроке будет показано, как установить и настроить визуальный редактор CKEditor.

    • Урок 50. Капча

    В данном уроке будет показана установка и настройка пакета, предлагающего базовый вариант капчи для защиты форм сайта от спама.

    • Урок 51. Кэширование

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

    Часть 2. Практика создания сайта с Django

    Вторая часть курса будет посвящена повторению и закреплению пройденного в первой части материала. Во второй части полученные знания будут применены на практике.

    В качестве практики создается современный блог, предполагающий следующий функционал:

    • мощная удобная админка;
    • контроллер главной страницы;
    • категории статей;
    • многоуровневое меню;
    • статьи и работа с контентом;
    • пагинация для статей;
    • вывод статей на главной;
    • работа с БД (Django ORM);
    • статьи по категориям;
    • показ статей по тегу;
    • вывод популярных постов;
    • метки (теги) и облако тегов;
    • связанные со статьями;

    поиск и многое другое…

    • Урок 1. Установка Django

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

    • Урок 2. Контроллер главной страницы

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

    • Урок 3. Перенос шаблона в проект

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

    • Урок 4. Модели проекта

    В текущем уроке будут созданы все необходимые ключевые модели проекта – это модель категорий, статей и тегов. При этом в моделях будут описаны все необходимые связи между моделями, в частности связь один ко многим (one to many) для связи статей и категорий и связь многие ко многим (many to many) для связи статей и тегов.

    • Урок 5. Регистрация моделей в админке

    В данном уроке будут зарегистрированы созданные модели в админке сайта и после этого уже можно будет заняться наполнением сайта: созданием рубрик, статей, тегов.

    • Урок 6. Настройка админки

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

    • Урок 7. Тег шаблона меню

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

    • Урок 8. Выделение активного пункта меню

    В данном уроке будет написан простой код на JavaScript, который позволит подсвечивать активный пункт в меню.

    • Урок 9. Вывод статей на главной

    В текущем уроке будет реализован ключевой функционал главной страницы сайта – вывод списка последних статей. Благодаря Django эта задача решается очень быстро и просто.

    • Урок 10. Пагинация для статей

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

    • Урок 11. Статьи по категориям

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

    • Урок 12. Просмотр отдельной статьи

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

    • Урок 13. Показ статей по тегу

    К статьям могут быть привязаны теги (метки) и при выборе на сайте того или иного тега нам необходимо показывать список статей, которые связаны с выбранным тегом. По сути, это аналог привязки статьи к категории с той лишь разницей, что одна статья может принадлежать одной рубрике, а вот тегов к одной статье может быть привязано сколько угодно. В уроке будет показана реализация показа статей по тегу.

    • Урок 14. Вывод популярных постов

    В текущем уроке будет показана реализация функционала вывода списка популярных постов в сайдбаре сайта. Популярность будет рассчитываться на основе количества просмотра статей.

    • Урок 15. Облако тегов

    Еще одним типовым функционалом блога является облако меток. В данном уроке будет написан еще один пользовательский тег шаблона для показа облака тегов сайта.

    • Урок 16. Поиск

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

    • Уроки 17-19. Многоуровневое меню. Часть 1

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

    • Урок 18. Многоуровневое меню. Часть 2

    продолжение Многоуровневое меню

    • Урок 19. Многоуровневое меню. Часть 3

    продолжение Многоуровневое меню

    • Урок 20. Деплой проекта на хостинг. Часть 1

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

    • Урок 21. Деплой проекта на хостинг. Часть 2

    Деплой проекта на хостинг. Часть 2

    • Урок 22. Послесловие

    В заключительном уроке будет подытожена проделанная работа на протяжении всего курса по изучению фреймворка Django.

  • ВСЕ МАТЕРИАЛЫ АВТОРА

    Бесплатный видеокурс
    Бесплатный видеокур...

    Видеокурс
    Видеокурс "Laravel....

    Бесплатный видеокурс
    Бесплатный видеокур...

    Бесплатный видеокурс
    Бесплатный видеокур...

    Видеокурс
    Видеокурс "Фреймвор...

    Бесплатный видео урок
    Бесплатный видеокур...

    Видео урок
    Видеокурс "Python. ...

    Бесплатный видео урок
    Бесплатный видеокур...

    Видео урок
    Видеокурс "Фреймвор...

    Бесплатный видео урок
    Бесплатный видеокур...

    Видео урок
    Видеокурс "WordPres...

    Видео урок
    Видеокурс "1С-Битри...

    Бесплатный видео урок
    Бесплатный видеокур...

    Бесплатный видео урок
    Бесплатный видеокур...

    Видео урок
    Видеокурс "PHP-Маст...

    Видео урок
    Видеокурс "Интернет...

    Бесплатный видео урок
    Бесплатный видеокур...

    Видео урок
    Видеокурс "Фреймвор...

    Бесплатный видео урок
    Бесплатный видеокур...

    Видео урок
    Видеокурс "Фреймвор...

    Видео урок
    Видеокурс "Фреймвор...

    Бесплатный видео урок
    Бесплатный видеокур...

    Бесплатный видео урок
    Бесплатный видеокур...

    Видео урок
    Видеокурс "WordPres...

    Видео урок
    Видеокурс "WordPres...

    Видео урок
    Видеокурс "Премиум ...

    Видео урок
    Видеокурс "Премиум ...

    Видео урок
    Видеокурс "Премиум ...

    Бесплатный видео урок
    Бесплатный видеокур...

    Видео урок
    Видеокурс "Интернет...

  • СМОТРИТЕ БЕСПЛАТНЫЕ МИНИ - КУРСЫ АВТОРА

    Мини-курс
    Мини-курс "Фреймвор...

    Мини-курс
    Мини-курс "Django. ...

    Мини-курс.
    Мини-курс. "Фреймво...

    Мини-курс. Фреймворк Bootstrap 4. Быстрый старт. (Андрей Кудлай - Webformyself)
    Мини-курс. Фреймвор...

    CMS 1C-Битрикс быстрый старт, первые результаты. (Андрей Кудлай - Webformyself)
    Мини-курс. CMS 1C-Б...

    PHP. Прием платежей на сайте. (Андрей Кудлай - Webformyself)
    Мини-курс. PHP. При...

    OpenCart: быстрый старт. (Андрей Кудлай - Webformyself)
    Мини-курс. OpenCart...

    Фреймворк Yii2: теория и первая практика. (Андрей Кудлай - Webformyself)
    Мини-курс. Фреймвор...

    CakePHP - мощь и гибкость современного PHP-фреймворка. (Андрей Кудлай - Webformyself)
    Мини-курс. CakePHP ...

    Фреймворк Bootstrap. Верстаем адаптивно. (Андрей Кудлай - Webformyself)
    Мини-курс. Фреймвор...

    Премиум уроки по WordPress. (Андрей Бернацкий, Андрей Кудлай - Webformyself)
    Мини-курс. Премиум ...

    Создание интернет-магазина. (Андрей Бернацкий, Андрей Кудлай - Webformyself)
    Мини-курс. Создание...