День открытых дверей по курсу «Web-разработчик на Python» 13.04.2018 в 20:00 | OTUS
⚡ Подписка на курсы OTUS!
Интенсивная прокачка навыков для IT-специалистов!
Подробнее

Курсы

Программирование
C++ Developer. Professional JavaScript Developer. Professional Android Developer. Professional Microservice Architecture React.js Developer JavaScript Developer. Basic PostgreSQL Программист С C++ Developer. Basic Team Lead PHP Developer. Professional Подготовка к сертификации Oracle Java Programmer (OCAJP) Алгоритмы и структуры данных Разработчик IoT C# Developer. Basic Unreal Engine Technical Game Design C# ASP.NET Core разработчик Python Developer. Basic Архитектура и шаблоны проектирования Node.js Developer iOS Developer. Professional Cloud Solution Architecture Kotlin Backend Developer Agile Project Manager Scala-разработчик Symfony Framework iOS Developer. Basic Супер-интенсив Azure Специализация Python Developer
Инфраструктура
Экспресс-курс по управлению миграциями (DBVC) Экспресс-курс «IaC Ansible» Microservice Architecture Разработчик программных роботов (RPA) на базе UiPath и PIX Внедрение и работа в DevSecOps NoSQL Специализация Administrator Linux
-24%
Разработчик IoT Мониторинг и логирование: Zabbix, Prometheus, ELK MongoDB
-37%
DevOps практики и инструменты MS SQL Server Developer SRE практики и инструменты Administrator Linux. Advanced Infrastructure as a code Супер-интенсив "Tarantool" Специализация Network engineer
Корпоративные курсы
Экспресс-курс по управлению миграциями (DBVC) Экспресс-курс «IaC Ansible» Разработчик программных роботов (RPA) на базе UiPath и PIX Внедрение и работа в DevSecOps NoSQL Spark Developer Экспресс-курс «CI/CD или Непрерывная поставка с Docker и Kubernetes» Game QA Engineer DevOps практики и инструменты Enterprise Architect Node.js Developer Cloud Solution Architecture Agile Project Manager Супер-практикум по работе с протоколом BGP Infrastructure as a code Промышленный ML на больших данных Супер-интенсив Azure Руководитель поддержки пользователей в IT
Специализации Курсы в разработке Подготовительные курсы Подписка
+7 499 938-92-02
Проходил 13 апреля 2018 года в 20:00

День открытых дверей
Web Разработчик

День открытых дверей онлайн

Хотите узнать, почему OTUS – больше, чем просто образовательный портал?
Как OTUS дает возможность стать частью сообщества профессионалов и сделать новый шаг по карьерной лестнице?
Почему учиться – не обязанность, а удовольствие и почему тесное сплетение теории и практики в обучении дает эффект синергии?
Приходите к нам на День Открытых Дверей. Формат проведения – онлайн – подключиться можно из любой точки мира!
Преподаватель
Илья Лебедев

Запись

О курсе

Web-разработчик на Python
80 000 ₽
5 месяцев
Начало 25 октября

Вы получите практический опыт и углубленные навыки бэкенд-разработки на Python и Django, а также освоите фронтенд-разработку с нуля на ReactJS и в Figma. По итогам обучения ваше портфолио пополнят 3 готовых проекта:

— Блог, написанный на Flask,
— Образовательная платформа на Django с личным кабинетом для студентов и админкой,
— Индивидуальный проект на выбор или масштабный корпоративный проект в команде.

Дополнительно вы овладеете …

Программа курса
Модуль 1
Основы python и модульного тестирования
Модуль 2
Создаем свой блог. База данных и ORM. Flask. MVC. Docker
Модуль 3
Разработка проекта с Server-Side Rendering на Django. Оптимизация и тестирование
Модуль 4
Django REST framework. GraphQl. Создание API
Модуль 5
Начинаем создавать frontend часть обучающего сайта, получаем данные с backend. Основы html, css, js, ES6, node.js, webpack, ajax
Модуль 6
Создаем SPA приложение на Vue3. Vue2, Vuex, vue-router, SPA, тестирование в js
Модуль 7
Взаимодействие frontend и backend. Full-stack разработка. Добавляем vue к обучающему сайту
Модуль 8
Проект
Основы python и модульного тестирования
Цель: выровнять фундамент знаний
Знакомство с курсом. Введение в HTTP. Работа с библиотеками requests и BeautifulSoup
понимать работу HTTP;
отправлять запросы с помощью requests;
использовать BeautifulSoup для парсинга html-страниц.
25 октября, 20:00 — 21:30
Домашние задания: 1
ДЗ
Парсер ссылок с сайта. 0. Выбрать любой сайт на котором есть хотя бы одна ссылка на другие сайта (html-тэг a)

Написать парсер, который:
1. будет отправлять запрос на этот сайт
2. получать с него все ссылки на другие сайты (которые находятся в href-атрибуте html-тэга а)
3. выводить полученные ссылки в терминал

дополнительно:
4. для каждой полученной ссылки повторять процедуру (отправлять запрос на этот адрес, получать все связанные ссылки и выводить в терминал)
5. добавить возможность выбора либо выводить результат в терминал, либо сохранять его в файл

6. Сдать дз в виде ссылки на репозиторий
Основы ООП. Принципы ООП
создавать классы;
создавать объекты классов;
создавать свойства и методы класса;
создавать методы доступа;
объяснить как реализованы принципы ООП в python.
11 ноября, 20:00 — 21:30
ООП. Магические методы, утиная типизация, статические методы, методы класса
писать код с применением основных магических методов и утиной типизации;
объяснить, что такое магические методы и зачем они нужны;
объяснить для чего нужны статические методы и методы класса и как их писать.
15 ноября, 20:00 — 21:30
Домашние задания: 1
ДЗ
Написать игру "Лото". 1. Создать новый проект "Игра лото"

2. Правила игры можно скачать тут: https://gist.github.com/DanteOnline/038d59cb9c5b704d02238f4e11b95c97

3. Написать игру лото

Возможные подходы к решению задачи:
1) Проектирование на основании предметной области. Подумать какие объекты есть в игре и какие из них можно перенести в программу. Для них создать классы с соответствующими свойствами и методами. Проверить каждый класс отдельно. Написать программу с помощью этих классов

2) Метод грубой силы + рефакторинг. Написать программу как получится. После этого с помощью принципа DRY убрать дублирование в коде

3) Процедурное программирование

4. Минимальные требования: 2 игрока - человек играет с компьютером
5. (Дополнительно *) возможность выбирать тип обоих игроков (компьютер или человек) таки образом чтобы можно было играть: компьютер - человек, человек - человек, компьютер - компьютер
6. (Дополнительно *) возможность играть для любого количества игроков от 2 и более

7. Создать Dockerfile для запуска проекта с помощью docker

8. Сдать дз в виде ссылки на репозиторий

Для тренировки предлагаю пользоваться принципами "чистого" когда, которые разбирали на первом занятии
Введение в автотесты. pytest
писать тесты для функций и классов на pytest;
запускать тесты;
объяснить, что такое автоматизированное тестирование;
осознать зачем нужно автоматизированное тестирование;
запомнить плюсы и минусы библиотеки pytest;
объяснить для чего нужны методы setup, teardown.
18 ноября, 20:00 — 21:30
Домашние задания: 1
ДЗ
Покрыть предыдущие дз тестами. 1. В проекте "Лото" написать тесты
2. Если написать тесты не удается, попробуйте разбить программу так, чтобы в ней было больше чистых функций
3. В качестве тренировки можно попробовать написать тесты для парсера из 1-го дз
4. Сдать дз в качестве ссылки на репозиторий с проектом
Создаем свой блог. База данных и ORM. Flask. MVC. Docker
Цель: применять в веб-приложениях
Введение в docker, docker-compose
объяснить, что такое docker и для чего он нужен;
проанализировать плюсы и минусы docker;
разобраться с примерами настроек docker-контейнера;
собирать docker-контейнер для django проекта
проанализировать основные команды docker, понять как они работают
8 ноября, 20:00 — 21:30
ORM, SQLAlchemy
создавать модели данных с помощью SQLAlchemy для заданной предметной области;
объяснить, что такое ORM, для чего он используется;
объяснить как делать основные запросы в базу данных с помощью ORM.
25 ноября, 20:00 — 21:30
Домашние задания: 1
ДЗ
Создание моделей данных для сайта "Мой блог" на выбранную тему. 1. Создать новый проект "Мой блог", по нему будет 3 домашних задания. Рекомендуется создать для этого проекта отдельный репозиторий
2. Придумать тему блога. Она может быть любая какая вам более интересна (например экзотические птицы, занятия workout-ом, искусство, ...)
3. С помощью SQLAlchemy создать модели данных для блога, например (Post, User, ...) и все другие, которые вы считаете важными
4. Установить связи между моделями
5. В качестве примера ввести некоторые данные
6. Выбрать все посты конкретного пользователя, попробовать сделать другие запросы (Рекомендуется сделать это в виде тестов pytest, можно просто с помощью print)
7. Сдать дз в виде ссылки на репозиторий
Знакомство с Front-end частью курса. Основы HTML, CSS, методологии верстки. Немного Bootstrap 4
писать css селекторы;
запомнить устройство http, web, rest;
осознать назначение кодов ответа;
объяснить как связаны html, css, js и из чего они состоят;
проанализировать какие есть способы разработки css;
объяснить как пользоваться bootstrap4.
29 ноября, 20:00 — 21:30
Домашние задания: 1
ДЗ
Сделать верстку для сайта "Мой блог". 1. В проекте "Мой блог" создать папку templates
Пока сделаем статические страницы, позже подключим flask
2. Создать следующие страницы и переходы между ними: главная страница, все посты (они могут быть сразу на главной), 1 пост, контакты.
3. Создать любые другие страницы которые вы считаете нужными
4. В зависимости от выбранной темы создать дизайн для страниц
Можно использовать bootstrap, можно самим написать css, можно использовать любой другой способ
Введение в werkzeug; Flask
запустить тестовый сервер на Flask;
проанализировать как связаны view и шаблоны;
объяснить как работает шаблонизатор, что это такое;
объяснить зачем нужны Blueprint и как их использовать;
создать небольшой проект на Flask.
2 декабря, 20:00 — 21:30
Werkzeug; Flask + SQLAlchemy. Работа с моделями данных
добавлять модели и базу данных в проект на Flask;
проанализировать паттерн MVC и зачем он нужен;
настроить Flask для работы с SQLAlchemy;
объяснить как сохранять и получать данные.
6 декабря, 20:00 — 21:30
Связь контейнеров в docker. Сборка проекта на Flask
понять как собирать проект из нескольких контейнеров и docker-compose;
собирать проект на flask в докере;
связывать контейнеры друг с другом
9 декабря, 20:00 — 21:30
Домашние задания: 1
ДЗ
Сделать сайт "Мой блог" на Flask + SQLAlchemy. 1) Заканчиваем мини проект "Мой блог"
2) Собираем все вместе: (базу, view, шаблоны и дизайн)
3) Хорошо будет добавить регистрацию и авторизацию пользователя на сайте
4) Можно добавить любой новый полезный функционал
5) Сдать ссылку на репозиторий с проектом
6) Написать небольшой readme как работает система
7) Реализовать запуск проекта в docker
8) Сдать дз в виде ссылки на репозиторий
Разработка проекта с Server-Side Rendering на Django. Оптимизация и тестирование
Цель: реализация и поддержка проектов с Server-Side Rendering
Django settings, orm, админка, миграции, superuser
добавлять модели и базу данных в проект на Django;
делать миграции данных;
сохранять данные в базу;
объяснить как создавать проект на Django;
запомнить из чего состоит проект;
осознать, что такое миграции и зачем они нужны;
посмотреть на стандартную админку.
13 декабря, 20:00 — 21:30
Домашние задания: 1
ДЗ
Обучающий сайт на выбранную тему. 1. Создать проект "Обучающий сайт". По нему будут задания до конца курса, сначала backend потом frontend. Рекомендуется создать для проекта отдельный репозиторий
2. Придумать тему (чему будем обучать на сайте) можно любую какая вам наиболее интересна.
3. Примерное описание работы сайта:
Сайт будет похож на OTUS + дополнительный функционал в зависимости от темы. На нем будут курсы, категории, преподаватели, занятия, расписание, ... + доп. функционал в зависимости от выбранной темы.
Будут как классические страницы (созданные на сервере), так и api в json
4. Необходимо создать модели данных (Преподаватель, студент, курс, расписание, ...). Можно не все сразу, а какую то часть и постепенно добавлять новые
5. Создать связи между моделями
6. Сделать миграции
7. Настроить стандартную админку
8. Заполнить базу некоторыми реальными или тестовыми данными
9. Сдать сайт в виде ссылки на репозиторий (базу используем пока тестовую sqlite) сам файл с базой в репозиторий рекомендуется не заливать
10. Рекомендуется добавить в репозиторий файл readme с кратким описанием работы системы
Django cbv, шаблоны, наследование шаблонов
разобраться как работает шаблонизатор django;
объяснить для чего и как использовать наследование шаблонов;
осознать что такое cbv в django;
объяснить какие классы из cbv используются для crud;
разобраться для чего нужны классы View и TemplateView;
осознать для чего нужны Mixins и как они позволяют расширять стандартные классы.
16 декабря, 20:00 — 21:30
Домашние задания: 1
ДЗ
Страницы для создания, удаления, редактирования, просмотра 1-го курса и списка курсов. 1. Продолжаем проект на django
2. В проекте добавляем страницы (у нас будут как классические страницы с рендерингом на сервере, так и api с рендерингом на клиенте)
3. Пока добавляем классические страницы с рендерингом на сервере
4. Добавить страницу для просмотра списка курсов
5. Добавить страницу для просмотра одного курса
6. Добавить страницы для создания, удаления, редактирования курса
7. Дополнительно можно добавить любой полезный функционал
8. Так же в проект рекомендуется добавить необходимые базовые и включенные шаблоны

Рекомендуется все view делать с использованием CBV
Django forms. Наследование моделей. Абстрактные классы и proxy в django
взаимодействовать с пользователем с помощью Django Forms;
проанализировать различные варианты форм;
объяснить как можно настраивать форму;
разобраться с наследованием моделей в Django;
проанализировать варианты наследования.
20 декабря, 20:00 — 21:30
Django m2m, select_related/prefetch_related, django debug toolbar
объяснить зачем нужен django-debug-toolbar;
установить и настроить;
познакомиться с manytomany;
добавлять many_to_many записи;
объяснить зачем нужны prefetch_related и select_related и в чем их разница.
17 января, 20:00 — 21:30
Django ORM, оптимизация работы с БД
писать запросы с применением F-объектов;
оптимизировать запросы с помощью exists;
оптимизировать запросы с помощью cashed_property;
объяснить для чего и как использовать bulk update, iterator в queryset, аннотации.
20 января, 20:00 — 21:30
Домашние задания: 1
ДЗ
Оптимизировать работу с базой данных. Написать отчет. 1. Задача состоит в том чтобы ускорить работу сайта. Критерием будет количество запросов на странице (в большинстве случаев это подходит, иногда с уменьшением количества запросов увеличивается время ответа от страниц, поэтому можно еще обращать внимание на время загрузки страницы)

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

3. Дополнительно приложить отчет в виде таблицы (скрин или документ). В таблице 4 колонки:

- Адрес страницы
- Кол-во запросов до оптимизации
- Кол-во запросов после оптимизации
- Средство оптимизации (кратко, например select_related, cached_property, with, кэширование, любые другие)
кэширование - желательно использовать только в крайнем случае и аккуратно
Тестирование django приложений. Тестирование моделей. mixer для создания фейковых данных
тестировать django-приложения;
запускать тесты;
объяснить для чего setUp и tearDown;
создавать фейковые данные с помощью mixer.
23 декабря, 20:00 — 21:30
Django. фабрики: mixer, Factory Boy, Faker
познакомиться поближе с Mixer, Factory Boy и Faker
27 декабря, 20:00 — 21:30
Азы работы с очередями задач
разобраться зачем нужны очереди задачи;
настроить rq и redis;
создавать задачи;
запускать задачи по отдельности и по расписанию;
делать в проекте на django.
30 декабря, 20:00 — 21:30
Домашние задания: 1
ДЗ
Добавить страницу с контактами и отправкой сообщения с помощью очереди задач. 1. Добавить страницу с контактами
2. На странице создать форму для отправки сообщения
3. После отправки формы отправлять письмо на почту администратора (о том что нам отправили сообщение)
4.И второе письмо на почту указанную в форме (о том что мы приняли его сообщение)
5 .Отправку писем реализовать через очередь задач (Можно использовать rq или любую другую библиотеку)
Django REST framework. GraphQl. Создание API
Цель: работа с API и создание современного backend
Введение в django-rest-framework
объяснить зачем нужен rest framework;
установить rest framework;
работать с APIView;
объяснить для чего и как используются сериализаторы;
создать CRUD для модели данных.
3 января, 20:00 — 21:30
DRF. Serializers. Renderers. Routers
понимать назначение serializers, renderers, routers в DRF;
выбирать нужный вариант класса для конкретной задачи;
создавать serializers для разных моделей;
описывать разные типы связей;
DRF. Views. Filtering. Pagination
понимать назначение views;
использовать различные варианты views в DRF;
добавлять фильтры в API;
добавлять постраничный вывод в API.
Django-rest-framework авторизация
проанализировать варианты авторизации с django-rest-framework;
объяснить в каком случае какой вариант используется;
реализовать некоторые варианты;
объяснить как происходит авторизация по JWT и Oauth2.
6 января, 20:00 — 21:30
Домашние задания: 1
ДЗ
Создать rest-api для сайта. 1. Продолжаем работать с проектом
2. Подумать для каких частей сайта будет rest api
3. Реализовать rest api (можно использовать django-rest-framework или любые другие средства)
4. Продумать систему прав
5. Какие права будут по умолчанию для всех страниц?
6. Какие права будут для каждой страницы?
7. Дописать свои права если они требуются
8. Продумать систему аутентификации
9. Реализовать систему аутентификации
10. Рекомендуется в систему аутентификации включить аутентификации по токену (из за большой популярности) и реализовать возможность создания токена для конкретного пользователя (например в личном кабинете)
DRF. Система версий. Документация
использовать swagger для создания документации;
создавать и поддерживать разные версии API;
API. GraphQL и его реализация в Python. GraphQL и Django
разобраться зачем нужен GraphQL;
объяснить как он реализован в python;
объяснить как создавать схему;
проанализировать варианты использования GraphQL;
фильтровать данные с GraphQL;
изменять (мутировать) данные.
10 января, 20:00 — 21:30
Домашние задания: 1
ДЗ
С помощью GraphQL создать схему. С помощью GraphQL создать схему, которая позволяет получать одновременно курсы, преподавателей и всех студентов записанных на курс
Тестирование django приложений. Тестирование views. Тестирование api
использовать тестовый клиент для тестирования view в django;
объяснить, что можно проверять на странице;
писать тесты для api.
13 января, 20:00 — 21:30
Code review бэкенд части приложения
делать code review;
проанализировать слабые места своей работы;
запомнить best practice.
24 января, 20:00 — 21:30
Начинаем создавать frontend часть обучающего сайта, получаем данные с backend. Основы html, css, js, ES6, node.js, webpack, ajax
Цель: работать со старым и новым js, настраивать окружение для frontend
Современный фронтенд
различать современный JS синтаксис (JS, ES5/ES6/ES8);
основные типы
наследование
работа с функциями
27 января, 20:00 — 21:30
ES6, NodeJS окружение
объяснить разницу кода в ES6;
разобраться с деструкцией и распаковкой;
проанализировать объекты в ES6, getters, setters;
разобраться с import, export;
объяснить зачем нужен node.js, npm
31 января, 20:00 — 21:30
webpack + babel, транспайлинг
babel, webpack;
разобраться с настройкой проекта.
3 февраля, 20:00 — 21:30
Домашние задания: 1
ДЗ
Сборка UI с помощью webpack. В этом домашнем задании можно потренироваться в отдельном проекте. В следующем домашнем задании мы будем собирать всем вместе с backend

1. Установить node js
2. После установки приложить скриншот с версией node.js
3. Для установки библиотек используем npm
4. Установить babel
5. Написать любой код на ES6 и с помощью babel посмотреть как он преобразуется в старый стиль
6. Приложить скриншот
7. Создать проект (nmp init)
8. Установить в проект пакет axios
9. Приложить скриншот package.json
10. Клонировать демонстрационный webpack проект https://github.com/wbkd/webpack-starter
11. Установить зависимости
12. Запустить проект
13. Приложить скриншот запущенного проекта
CSS препроцессоры". "fetch || axios || $.ajax для REST запросов, модульность
написать код на less;
объяснить зачем нужны css препроцессоры;
установить less в webpack;
объяснить зачем нужны ajax, axios, fetch и в чем их разница.
7 февраля, 20:00 — 21:30
Домашние задания: 1
ДЗ
Взаимодействие с api с помощью fetch или axios или ajax. 1) Настроить сборку webpack-ом в проекте django. Это можно сделать по данной инструкции: https://gist.github.com/DanteOnline/501018d64e2ddbb2324121df9a94b7e5
2) Создать в django тестовую view и тестовый url. Просто пустую страницу с шаблоном
3) К шаблону подключить скрипт собранный webpack-ом <script src="{% static 'frontend/index.js' %}"></script>
Проверить что всё работает и скрипт выполняется при отгрузке страницы

4) Установить axios
5) В скрипте с помощью fetch получить данные по курсам
6) В этом же скрипте с помощью axios получить данные по студентам (или любые другие для которых у вас есть api)
7) Вывести полученные данные в консоль (этого будет достаточно) или на страницу использую минимальную разметку

В этом дз этого будет достаточно, т.к. всё остальное будет удобнее делать с помощью react

Для тех у кого есть желание ДОПОЛНИТЕЛЬНОЕ ЗАДАНИЕ:

1. Сделать страницы логина и регистрации (но теперь мы взаимодействуем с сервером с помощью fetch или axios или ajax)
Дополнительно:
2. Так же можно попробовать переделать другие страницы, например страницу со списком курсов для тренировки (хотя потом это удобнее будет сделать уже на react)
3 Если в api есть авторизация по токену, можно в личном кабинете сделать на ajax возможность обновлять и создавать токен

Создаем SPA приложение на Vue3. Vue2, Vuex, vue-router, SPA, тестирование в js
Цель: разработка современного frontend на vue
Основы Vue, JSX, компоненты Vue
объяснить, что такое компонентный подходи и зачем он нужен;
разобраться с virtual DOM.
разобраться со структурой Vue
настроить себе окружение IDE, зависимости и библиотеки для создания проектов и работы с Vue;
создавать простейшие приложения используя Vue.
10 февраля, 20:00 — 21:30
Домашние задания: 1
ДЗ
Сделать главную страницу на Vue. В предыдущем дз мы создали структуру проекта и использовали axios
Почти все готово для использования Vue.

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

Начиная с этого дз можно перейти на использование проекта созданного с нуля с помощью Vue-CLI

Пример с минимальной настройкой django, webpack, react и одной страницей: https://github.com/gtalarico/django-vue-template
Компоненты, шаблонизатор и формы, Props, data-flow
менять state компонента по событию;
запомнить варианты использования и валидации props;
запомнить какие есть доступные события;
объяснить, что такое state и для чего он используется;
объяснить разницу между state и props;
проанализировать принцип data-flow.
14 февраля, 20:00 — 21:30
Vue3 и Routing
проанализировать этапы жизненного цикла vue-компонента;
объяснить в каком методе лучше делать загрузку данных с сервера и почему;
разобраться с загрузкой данных через fetch.
vue-router
Vue3
21 февраля, 20:00 — 21:30
Домашние задания: 1
ДЗ
Сделать страницу курсов, одного курса и записи на курс на Vue. 1) С помощью Vue сделать следующие страницы:
- Список курсов
- Страница просмотра одного курса
- Страница с возможностью записи на курс
- Так же можно добавить любые другие полезные для данной системы страницы
2) До занятия по роутингу в Vue можно создавать новый .vue и подключать его к соответствующей странице (переходами будет заниматься backend)
Состояние приложения, Vuex
после занятия вы сможете:
создавать плагины;
работать Vuex
24 февраля, 20:00 — 21:30
Домашние задания: 1
ДЗ
Перевести все страницы сайта на Vue. Заканчиваем наполнять проект функционалом.
На Vue добавляем следующие страницы:
1. Личный кабинет студента, где он может смотреть свои курсы
2. Страницу для генерации и изменения токена авторизации (если ее еще нет), тоже в личном кабинете
3. Любой другой функционал (доделываем сайт)
После этого у нас останется попробовать перевести всё в SPA (используя маршрутизацию vue-router) и добавить тестирование

Примерное описание итоговой работы сайта (минимально):
- Список курсов (возможно с другими связанными моделями) - CRUD
- Регистрация/авторизация (в сессии, по токену)
- Запись на курс
- Личный кабинет со списком курсов
- Возможность создавать/пересоздавать токен авторизации
- Страница контактов с возможностью отправить сообщение
Vue, Best Practices
работать с анимацией во Vue.
SSR с Nuxt;
паттерны и антипаттерны
28 февраля, 20:00 — 21:30
Тестирование JS приложений
проанализировать инструменты тестирования в JS;
писать тесты;
запускать тесты;
Vue Test Utils
7 марта, 20:00 — 21:30
Домашние задания: 1
ДЗ
Написание unit-тестов для UI и back-end. 1. Чем больше будет покрытие тестированием, тем лучше
2. Минимально рекомендуется попробовать написать несколько новых тестов для models, view, api и несколько тестов для frontend, https://vue-test-utils.vuejs.org
Code review frontend части на Vue
проанализировать слабые места своей работы;
best practice.
10 марта, 20:00 — 21:30
Взаимодействие frontend и backend. Full-stack разработка. Добавляем vue к обучающему сайту
Цель: полностью освоить современную Web-разработку с использованием python и js
Варианты авторизации. JWT, cookies, 3rd party integration
различать варианты авторизации;
понимать плюсы и минусы каждого варианта;
понимать принципы авторизации по JWT, cookies, 3rd party integration;
17 февраля, 20:00 — 21:30
Сборка проекта с docker для разработки и production
настраивать среду разработки для работы с backend и frontend;
собирать проект (Django+Vue) с docker и docker-compose для разработки и для production;
Домашние задания: 1
ДЗ
Личный кабинет для обучающего сайта на vue. 1. В проект "обучающий сайт" добавить frontend на vue (создать удобную структуру для работы с frontend и backend)
2. На vue у нас будет SPA для личного кабинета пользователя
3. В личном кабинете сделать следующие страницы (используем routing на vue):
- Страницу для списка курсов (на которые записался пользователь, для преподавателя это может быть курсы которые он ведет)
- Страницу для просмотра своего токена авторизации и его изменения
- Возможность отписаться от курса
- Возможность просмотра информации по курсу, на который записан студент (аналог detail в django)
(Итого 4 страницы, так же можно добавить любые другие по желанию)

Дополнительно можно собрать итоговый проект для production с docker и docker-compose, а так же перенести проект на vps (при наличии) или виртуальную машину
Контектсные процессоры и middleware в django. Подведение итогов
писать контекстные процессоры;
объяснить строение middleware в django
оценить результаты обучения на курсе.
14 марта, 20:00 — 21:30
Проект
Выбор темы и организация проектной работы
выбрать и обсудить тему проектной работы;
спланировать работу над проектом;
ознакомиться с регламентом работы над проектом.
17 марта, 20:00 — 21:30
Домашние задания: 1
ДЗ
Выбор проекта и дальнейшая работа с ним. 1. Выбрать тему проекта и утвердить ее в личном кабинете
2. Выделить самое главное в вашей системе
3. Реализовать самое главное
4. Реализовать все остальное, по мере сил
5. Приложить результат в чат с преподавателем

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

Преподаватель

Илья Лебедев
Эксперт, консультант по архитектуре приложений. Специалист по разработке серверных решений на Python. Автор курсов по веб-разработке в МГТУ им. Баумана, ВШЭ. Соорганизатор курсов Learn Python и devman.org. Старший разработчик в Itcanfly и Ngenix.
9 лет опыта программирования на C++, Python, PHP и JavaScript. Участвовал в проектах разной сложности: от разработки небольших корпоративных сайтов до планирования и реализации высоконагруженных сервисов и использованием микросервисной архитектуры.

F.A.Q.: Наиболее часто задаваемые вопросы:

Нужно ли оплачивать обучение до Дня открытых дверей, если я хочу гарантированно попасть в группу?
Да, мы рекомендуем заранее оплатить обучение, чтобы гарантированно попасть в группу. В период проведения Дня открытых дверей резко возрастает количество желающих обучаться, поэтому может случиться так, что к окончанию Дня открытых дверей мест в группе не останется
Кто будет проводить День открытых дверей?
Проводить День открытых дверей будет преподаватель курса.
Как принять участие в Дне открытых дверей?
Для того, чтобы принять участие в Дне открытых дверей, оставьте свой e-mail в поле регистрации на мероприятие. Перед началом Дня открытых дверей мы пришлем вам ссылку, пройдя по которой, вы сможете присоединиться к вебинару.
Какие вопросы будем обсуждать на Дне открытых дверей?
На дне открытых дверей мы поговорим о проекте OTUS (о программе курса, почему мы не принимаем в группы новичков, почему учиться у нас интересно, но сложно), карьерных перспективах выпускников (почему вероятность карьерного роста у лучших студентов стремится к 100%), учебном процессе (оплатах, оценке знаний, сертификатах и прочих аспектах). Также ведущий мероприятия с радостью ответит на все ваши вопросы.