День открытых дверей по курсу «Django-разработчик» 21.02.2020 в 20:00 | OTUS
Запланируйте обучение с выгодой в Otus!
-15% на все курсы до 20.11 Забрать скидку! →
Выбрать курс
Проходил 21 февраля 2020 года в 20:00

День открытых дверей
Всё о курсе «Web-разработчик на Python»

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

День Открытых Дверей — отличная возможность задать все вопросы по курсу, узнать подробнее о программе, особенностях онлайн-формата, навыках, компетенциях и перспективах, которые ждут выпускников после обучения. Также преподаватель расскажет о себе и своём профессиональном опыте. Поэтому если есть вопрос, запишитесь на онлайн-трансляцию и задайте его в прямом эфире!
Преподаватель
Леонид Орлов

Запись

О курсе

Django-разработчик
52 500 ₽
Начало в апреле 2025 года

Вы получите
Практический опыт и углубленные навыки бэкенд-разработки на Python и Django, а также освоите фронтенд-разработку с нуля на Vue.js.


По итогам обучения ваше портфолио пополнят 3 готовых проекта:

  • Блог, написанный на Flask,
  • Образовательная платформа на Django с личным кабинетом для …
Программа курса
Модуль 1
Основы Python и модульного тестирования
Модуль 2
Создаем свой блог. База данных и ORM. FastAPI.
Модуль 3
Разработка проекта с Server-Side Rendering на Django. Оптимизация и тестирование
Модуль 4
Django REST framework. Создание API
Модуль 5
Создаем frontend часть обучающего сайта, получаем данные с backend
Модуль 6
Создаем SPA приложение на Vue3
Модуль 7
Взаимодействие frontend и backend. Full-stack разработка. Добавляем Vue к обучающему сайту
Модуль 8
Проект
Основы Python и модульного тестирования
Цель: выровнять фундамент знаний
Знакомство с курсом. Введение в HTTP. Работа с библиотеками requests и BeautifulSoup // ДЗ
понимать работу HTTP;
отправлять запросы с помощью requests;
использовать BeautifulSoup для парсинга html-страниц.
Домашние задания: 1
ДЗ
Парсер ссылок с сайта. 0. Выбрать любой сайт на котором есть хотя бы одна ссылка на другие сайты (html-тэг a)

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

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

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

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

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

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

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

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

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

8. Сдать дз в виде ссылки на репозиторий
Введение в автотесты. pytest // ДЗ
писать тесты для функций и классов на pytest;
запускать тесты;
объяснить, что такое автоматизированное тестирование;
осознать зачем нужно автоматизированное тестирование;
запомнить плюсы и минусы библиотеки pytest;
объяснить для чего нужны методы setup, teardown.
Домашние задания: 1
ДЗ
Покрыть предыдущие дз тестами. 1. В проекте "Лото" написать тесты
2. Если написать тесты не удается, попробуйте разбить программу так, чтобы в ней было больше чистых функций
3. В качестве тренировки можно попробовать написать тесты для парсера из 1-го дз
4. Сдать дз в качестве ссылки на репозиторий с проектом
Создаем свой блог. База данных и ORM. FastAPI.
Цель: применять в веб-приложениях
ORM, SQLAlchemy // ДЗ
создавать модели данных с помощью SQLAlchemy для заданной предметной области;
объяснить, что такое ORM, для чего он используется;
объяснить как делать основные запросы в базу данных с помощью ORM.
Домашние задания: 1
ДЗ
Создание моделей данных для сайта "Мой блог" на выбранную тему. 1. Создать новый проект "Мой блог", по нему будет 3 домашних задания. Рекомендуется создать для этого проекта отдельный репозиторий
2. Придумать тему блога. Она может быть любая какая вам более интересна (например экзотические птицы, занятия workout-ом, искусство, ...)
3. С помощью SQLAlchemy создать модели данных для блога, например (Post, User, ...) и все другие, которые вы считаете важными
4. Установить связи между моделями
5. В качестве примера ввести некоторые данные
6. Выбрать все посты конкретного пользователя, попробовать сделать другие запросы (Рекомендуется сделать это в виде тестов pytest, можно просто с помощью print)
7. Сдать дз в виде ссылки на репозиторий
Знакомство с Front-end частью курса. Основы HTML, CSS, методологии верстки. Немного Bootstrap 5 // ДЗ
писать css селекторы;
запомнить устройство http, web, rest;
осознать назначение кодов ответа;
объяснить как связаны html, css, js и из чего они состоят;
проанализировать, какие есть способы разработки css;
объяснить как пользоваться bootstrap5.
Домашние задания: 1
ДЗ
Сделать верстку для сайта "Мой блог". 1. В проекте "Мой блог" создать папку templates
Пока сделаем статические страницы, позже подключим FastAPI
2. Создать следующие страницы и переходы между ними: главная страница, все посты (они могут быть сразу на главной), 1 пост, контакты.
3. Создать любые другие страницы которые вы считаете нужными
4. В зависимости от выбранной темы создать дизайн для страниц
Можно использовать bootstrap, можно самим написать css, можно использовать любой другой способ
FastAPI — быстрая разработка API
познакомиться с FastAPI;
научиться быстро создавать API ресурс;
рассмотреть swagger (apispec) на практике;
узнать про API роутеры и научиться их создавать и применять;
парсить тело запроса (Body) при помощи pydantic модели
Введение в docker, docker-compose
объяснить, что такое docker и для чего он нужен;
проанализировать плюсы и минусы docker;
разобраться с примерами настроек docker-контейнера;
собирать docker-контейнер для FastAPI проекта;
проанализировать основные команды docker, понять как они работают
Работа API с БД
подключить к нашему FastAPI приложению новые views, в которых будем работать с базой данных при помощи SQLAlchemy
Связь контейнеров в docker. Сборка проекта на FastAPI // ДЗ
понять, как собирать проект из нескольких контейнеров и docker-compose;
собирать проект на FastAPI в докере;
связывать контейнеры друг с другом
Домашние задания: 1
ДЗ
Сделать сайт "Мой блог" на FastAPI + 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;
запомнить из чего состоит проект;
осознать, что такое миграции и зачем они нужны;
посмотреть на стандартную админку.
Домашние задания: 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 и как они позволяют расширять стандартные классы.
Домашние задания: 1
ДЗ
Страницы для создания, удаления, редактирования, просмотра 1-го курса и списка курсов. 1. Продолжаем проект на django
2. В проекте добавляем страницы (у нас будут как классические страницы с рендерингом на сервере, так и api с рендерингом на клиенте)
3. Пока добавляем классические страницы с рендерингом на сервере
4. Добавить страницу для просмотра списка курсов
5. Добавить страницу для просмотра одного курса
6. Добавить страницы для создания, удаления, редактирования курса
7. Дополнительно можно добавить любой полезный функционал
8. Так же в проект рекомендуется добавить необходимые базовые и включенные шаблоны

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

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

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

- Адрес страницы
- Кол-во запросов до оптимизации
- Кол-во запросов после оптимизации
- Средство оптимизации (кратко, например select_related, cached_property, with, кэширование, любые другие)
кэширование - желательно использовать только в крайнем случае и аккуратно
Тестирование django приложений. Тестирование моделей. mixer для создания фейковых данных
тестировать django-приложения;
запускать тесты;
объяснить для чего setUp и tearDown;
создавать фейковые данные с помощью mixer.
Азы работы с очередями задач // ДЗ
разобраться зачем нужны очереди задачи;
настроить rq и redis;
создавать задачи;
запускать задачи по отдельности и по расписанию;
делать в проекте на django.
Домашние задания: 1
ДЗ
Добавить страницу с контактами и отправкой сообщения с помощью очереди задач. 1. Добавить страницу с контактами
2. На странице создать форму для отправки сообщения
3. После отправки формы отправлять письмо на почту администратора (о том, что нам отправили сообщение)
4.И второе письмо на почту указанную в форме (о том, что мы приняли его сообщение)
5 .Отправку писем реализовать через очередь задач (можно использовать rq или любую другую библиотеку)
Django REST framework. Создание API
Цель: работа с API и создание современного backend
Введение в django-rest-framework
объяснить зачем нужен rest framework;
установить rest framework;
работать с APIView;
объяснить для чего и как используются сериализаторы;
создать CRUD для модели данных.
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.
Домашние задания: 1
ДЗ
Создать rest-api для сайта. 1. Продолжаем работать с проектом
2. Подумать для каких частей сайта будет rest api
3. Реализовать rest api (можно использовать django-rest-framework или любые другие средства)
4. Продумать систему прав
5. Какие права будут по умолчанию для всех страниц?
6. Какие права будут для каждой страницы?
7. Дописать свои права, если они требуются
8. Продумать систему аутентификации
9. Реализовать систему аутентификации
10. Рекомендуется в систему аутентификации включить аутентификации по токену (из за большой популярности) и реализовать возможность создания токена для конкретного пользователя (например, в личном кабинете)
DRF. Система версий. Документация
использовать swagger для создания документации;
создавать и поддерживать разные версии API.
Тестирование django приложений. Тестирование views. Тестирование api
использовать тестовый клиент для тестирования view в django;
объяснить, что можно проверять на странице;
писать тесты для api.
Code review бэкенд части приложения
делать code review;
проанализировать слабые места своей работы;
запомнить best practice.
Создаем frontend часть обучающего сайта, получаем данные с backend
Цель: работать со старым и новым js, настраивать окружение для frontend
Современный фронтенд — обзор технологий
написать код на javascript;
научиться отлаживать код в браузере;
разобраться в работе браузера.
ES modules, API data loading, async/await
разобрать, как работает браузер;
научиться писать асинхронный код на JavaScript;
сделать запрос и получить данные.
NPM, сетап фронтенд проекта, Vite для сборки // ДЗ
установить и запустить скрипты на Node.js;
работать с пакетами с помощью менеджера(NPM, Yarn,PNPM);
собрать build с помощью Vite;
заложить масштабируемую структуру frontend проекта.
Домашние задания: 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 возможность обновлять и создавать токен

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

Знакомство с основами CSS и изучение современных возможностей CSS
Создаем SPA приложение на Vue3
Цель: разработка современного frontend на vue
Основы Vue3
настроить себе окружение IDE, зависимости и библиотеки для создания проектов и работы с Vue;
создавать простейшие приложения используя Vue;
рассмотреть основы Vue3.
Компоненты и шаблоны // ДЗ
обсудить и использовать синтаксис шаблонизатора;
создавать компоненты, описывать атрибуты элементов;
применять SFC.
Домашние задания: 1
ДЗ
SPA (Single Page Application) игра "Устный счет". В разделе Vue одна большая самостоятельная работа - SPA (Single Page Application) игра "Устный счет".
Игра состоит из двух экранов - на первом экране пользователь выбирает настройки, которые будут использовать в игре - типы вычислений, сложность, время раунда.
На этой же странице показывается статистика тренировок.
Вторая страница - сама игра.
Пользователь должен решить максимальное количество задач на заданное время.
Мокапы - https://app.moqups.com/[email protected]/bTYyBLCtpU/edit/page/ad64222d5

---

Подготовить общую структуру приложения - компоненты контейнеры для страниц приложения.
Сделать первую страницу приложения - форму настроек.
Состояние приложения - Vuex и Pinia // ДЗ
различать преимущества центрального уравления стейтом;
добавить State Management приложению Vue;
написать гетер, экшен и мутацию;
писать данные в State из компонентов.
Домашние задания: 1
ДЗ
Routing для приложения "Устный счет". Реализовать второй экран - игру "калькулятор".
Настроить переходы по страницам приложения.
Routing
описывать routing для Vue приложений.
Взаимодействие frontend и backend. Full-stack разработка. Добавляем Vue к обучающему сайту
Цель: полностью освоить современную Web-разработку с использованием python и js
Варианты авторизации. JWT, cookies, 3rd party integration
различать варианты авторизации;
понимать плюсы и минусы каждого варианта;
понимать принципы авторизации по JWT, cookies, 3rd party integration.
Сборка проекта с 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;
оценить результаты обучения на курсе.
Проект
Для проекта подойдет практически любая СВОЯ тема, кроме совсем простых. Обычно это может быть либо какая то исследовательская тема, например некоторая работа с данными, получение полезного результата и доступ к нему для пользователей. Другой вариант это полезная "бизнес" система которая дает некоторый полезный функционал пользователям (например автоматизация какой то области, интернет магазин, …)

Предпочтительным является стек технологий, который мы рассматривали в курсе (Django/Flask, Docker, Vue). Но проекте в нет ограничения на используемые технологии, языки и фреймворки.
Выбор темы и организация проектной работы
выбрать и обсудить тему проектной работы;
спланировать работу над проектом;
ознакомиться с регламентом работы над проектом.
20 ноября, 20:00 — 21:30
Лектор: Сурен Хоренян
Домашние задания: 1
ДЗ
Выбор проекта и дальнейшая работа с ним. 1. Выбрать тему проекта и утвердить ее в личном кабинете
2. Выделить самое главное в вашей системе
3. Реализовать самое главное
4. Реализовать все остальное, по мере сил
5. Приложить результат в чат с преподавателем

По желанию подготовиться выступление для занятия по защите проекта
Консультация по проектам и домашним заданиям
получить ответы на вопросы по проекту, ДЗ и по курсу.
4 декабря, 20:00 — 21:30
Лектор: Сурен Хоренян
Защита проектных работ
защитить проект и получить рекомендации экспертов.
18 декабря, 20:00 — 21:30
Лектор: Сурен Хоренян

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

Леонид Орлов
Занимается собственными проектами на Python и Django.

Выпускник кафедры информационных технологий физического факультета ПГНИУ.
Начал карьеру в крупной международной компании Prognoz, создавал проекты для правительства РФ в течение 2 лет.

Работал программистом биллинга на oracle pl/sql в компании «Эр-Телеком Холдинг».

С 2014 года стал преподавателем направления python-разработки.
Преподаватель курсов:
Django-разработчик

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

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