Skip to content

Latest commit

 

History

History
707 lines (608 loc) · 31.9 KB

File metadata and controls

707 lines (608 loc) · 31.9 KB

Лекция 1. Введение в Python. Переменные. Строки и числа. (1.5 часа)

  • Знакомство с Python: история, возможности, сферы применения.
  • Установка среды разработки (PyCharm, VS Code, Jupyter Notebook).
  • Переменные.
  • Первая программа: вывод текста(print()).
  • Основные типы данных (int, float, str).
  • Метод (input).
  • Базовые операции.
  • Практические задания
  • Домашнее задание.

Лекция 2. Булева алгебра и условия. (1.5 часа)

  • Булева алгебра.
  • Понятие булевой алгебры: True и False (приведение типов).
  • Операторы сравнения (>, <, >=, <=, ==, !=).
  • Логические операторы (and, or, not).
  • Условные конструкции (if, elif, else).
  • Вложенные и сложные условия.
  • Практические задания
  • Домашнее задание.

Лекция 3. Исключения и их обработка. (1.5 часа)

  • Что такое исключения? Виды ошибок в Python.
  • Обработка исключений с помощью try-except.
  • Использование finally.
  • Практические задания
  • Домашнее задание.

Лекция 4. Списки, срезы, Циклы (For, While). (1.5 часа)

  • Списки (Lists), создание, изменение, доступ к елементам списка, добавление и удаление элементов
  • Mетоды списков(append, clear, copy ...)
  • Понятие циклов и их необходимость.
  • Цикл for: синтаксис, примеры использования.
  • Цикл while: синтаксис, примеры использования.
  • Операторы break и continue.
  • Вложенные циклы.
  • Практические задания
  • Домашнее задание.

Лекция 5. Встроенные функции Python. Работа с файлами. (1.5 часа)

  • List comprehetion.
  • Встроенные функции any, all, sum, len, max, min, get...
  • Введение в файловую систему Python: чтение и запись файлов.
  • Практические задания
  • Домашнее задание.

Лекция 6.Хеш таблицы. Введение в кортежи(tuple), множества(set) и словари(dict). (1.5 часа)

  • Введение в хеш-таблицы
  • Кортежи (tuple)
  • Множества(set)
  • Словари(dict)
  • Практические задания
  • Домашнее задание

Лекция 7. Функции, типизация, lambda. Map, zip, filter. (1.5 часа)

  • Введение в функции
  • Аргументы и параметры
  • Типизация в Python (Type Hints)
  • Анонимные функции lambda
  • Функции высшего порядка: map(), zip(), filter()
  • Практические задания
  • Домашнее задание

Лекция 8. Рекурсия. Алгоритмы. Бинарный поиск, сортировки. (1.5 часа)

  • Рекурсия.
  • Что такое Алгоритмы?
  • Бинарный поиск.
  • Практические задания
  • Домашнее задание
  • Сортировки:
    • Сортировка пузырьком (Bubble Sort)
    • Сортировка вставками (Insertion Sort)
    • Сортировка слиянием (Merge Sort)
  • Практические задания
  • Домашнее задание

Лекция 9. Знакомство с Git. (1.5 часа)

  • Введение в Git.
  • Практика.

Лекция 10. Git. Удаленный репозиторий. (1.5 часа)

  • Что такое удаленный репозиторий?
  • Удаленные репозитории примеры.
  • Знакомство с Git-Hub.
  • Pull Request.

Модуль 1

Лекция 11. Основы ООП. (1.5 часа)

  • Введение в ООП.
  • Классы и объекты.
  • Атрибуты и методы.
  • Основные парадигмы ООП.
  • Практические задания
  • Домашнее задание

Лекция 12. Расширенные возможности ООП в Python. (1.5 часа)

  • Абстрактные классы (ABC)
  • Множественное наследование
  • Magic methods.
  • Метаклассы,( type,new)
  • Создание Собственных Исключений в Python.

Лекция 13. Декораторы. (1.5 часа)

  • Функции как объекты (передача функций в аргументы, return function)
  • Вложенные функции
  • Замыкания (closures)
  • Декораторы (функции-декораторы @decorator)
  • Декораторы классов: @staticmethod, @classmethod, @property

Лекция 14. Imports. Standard library. PEP8. (1.5 часа)

  • Импорт модулей в Python.
  • Как Python находит модули? (sys.path)
  • Стандартная библиотека Python (Standard Library)
  • PEP8 – стиль написания кода в Python

Лекция 15. Тестирование. (3 часа)

  • Введение в тестирование.
  • Виды тестирования.
  • Уровни тестирования.
  • Assert
  • TestCase
  • Тестовые фреймворки. Почему unittest?
  • Встроенные Assert.
  • Запуск тестов.
  • Структура проекта (где хранить тесты)
  • Модуль mock

Лекция 16. Проектирование. Паттерны. SOLID. (3 часа)

  • Введение.
  • Виды Проектирования.
  • Этапы объектно-ориентированной разработки: OOA → OOD → OOP
    • Анализ (OOA):
    • Проектирование (OOD):
    • Реализация (OOP):
  • Подход к проектированию :
    • Базовые принципы:
      • KISS (Keep It Simple, Stupid)
      • DRY (Don’t Repeat Yourself)
    • Data-Driven Development (DDD)
    • Test-Driven Development (TDD)
  • Патерны проектирования.
    • Порождающие.
    • Структурные.
    • Поведенческие.
  • Основные принципы ООП - SOLID.
    • The Single Responsibility Principle (S)
    • The Open Closed Principle (O)
    • The Liskov Substitution Principle (L)
    • ISP: The Interface Segregation Principle (I)
    • DIP: The Dependency Inversion Principle (D)

Лекция 17. СУБД. PostgreSQL. SQL. DDL. Пользователи. DCL. DML. Связи. (3 часа)

  • Введение в СУБД.

  • Типы СУБД.

  • Примеры СУБД.

  • PostgreSQL.

    • Установка PostgreSQL.
  • Таблицы:

    • Строки.
    • Столбцы.
  • Типы данных в БД.

    • Строковые.
    • Числовые.
    • Булевые.
    • NULL.
    • Собственные типы данных.
  • Основные операции c данными (CRUD).

    • C - Create (Создание).
    • R - Read (Чтение).
    • U - Update (Обновление).
    • D - DELETE (Удаление).
  • SQL (Structured Query Language) (Структурированный язык запросов)

    • DDL (Data definition language) (Язык определения данных)

      • CREATE
      • ALTER
      • DROP
      • TRUNCATE
      • Создание пользователя.
      • Создание БД.
      • Права доступа к БД.
    • DCL (Data Control Language)

      • GRANT
      • REVOKE
    • DML (Data manipulating language)

      • INSERT
      • UPDATE
      • DELETE
    • Связи

      • Ключевые слова
      • Типы связей

Лекция 18. СУБД. DQL. SELECT. Индексы. Group by. Joins. (3 часа)

  • DQL (Data query language) (Язык запроса данных):
    • SELECT
    • FROM
    • WHERE:
      • Операторы сравнения: =, !=, >, <, >=, <=.
      • Операторы логики: AND, OR, NOT.
      • Поиск по шаблону (LIKE)
    • Сортировка (ORDER BY):
      • ASC
      • DESC
    • Агрегатные функции:
      • COUNT() Количество строк
      • SUM() Сумма значений
      • AVG() Среднее значение
      • MIN() Минимальное значение
      • MAX() Максимальное значение
    • Группировка данных (GROUP BY)
      • HAVING
    • Ограничение количества строк (LIMIT, OFFSET)
    • Использование операторов UNION, INTERSECT и EXCEPT в SQL
    • Объединение таблиц (JOIN):
      • INNER JOIN (внутреннее соединение)
      • LEFT JOIN (левое соединение)
      • RIGHT JOIN (правое соединение)
      • FULL OUTER JOIN (полное соединение)

Лекция 19. СУБД. Нормализация. Аномалии. Транзакции. ACID. TCL. Backup (1.5 часа)

  • Нормализация
  • Аномалии
    • Три нормальные формы.
  • Транзакции
    • TCL
    • ACID
  • Backup

Лекция 20. Virtual env. Pip. Устанавливаемые модули. Pyenv. (1.5 часа)

  • Введение в управление окружением в Python
  • Virtualenv и venv (Создание виртуального окружения)
  • Управление пакетами с Pip
  • Устанавливаемые модули
  • Pyenv – управление версиями Python
  • Сравнение инструментов (venv, virtualenv, pyenv, pipenv)

Лекция 21. Знакомство с Интеренетом. (1.5 часа)

  • Введение: Как работает интернет?

    • Что такое интернет?
    • Как устройства соединяются между собой?
    • Роль серверов, клиентов и сетевого протокола.
    • Примеры веб-сайтов и веб-приложений.
  • Клиент-серверная архитектура

    • Кто такой клиент (браузер, мобильное приложение).
    • Кто такой сервер (где хранится код и данные).
    • Различие статических и динамических сайтов.
    • Как клиент и сервер взаимодействуют через запросы и ответы.
  • HTTP – Основной протокол веба

    • Что такое HTTP (HyperText Transfer Protocol)?
    • Разница между HTTP и HTTPS.
    • Как работает запрос-ответ?
    • Структура HTTP-запроса:
      • Метод (GET, POST, PUT, DELETE).
      • Заголовки (Headers).
      • Тело запроса (Body).
    • Структура HTTP-ответа:
      • Код ответа (200 OK, 404 Not Found, 500 Internal Server Error).
      • Тело ответа (HTML, JSON, XML).

Лекция 22. Введение в Django. Основы веб-разработки на Python (1.5 часа)

  • Введение в Django

    • Что такое Django и почему его выбирают?
    • История и философия Django ("The web framework for perfectionists with deadlines").
    • Преимущества Django:
      • Быстрое создание веб-приложений.
      • Автоматическое управление БД (ORM).
      • Безопасность (защита от XSS, CSRF, SQL-инъекций).
      • Гибкость и масштабируемость.
    • Примеры крупных проектов на Django (Instagram, Spotify, Disqus).
  • Архитектура Django: MVT (Model-View-Template)

    • Шаблон проектирования MVC.
    • Django основан на MVT (Model-View-Template), который похож на MVC.
    • Разница между MVC и MVT
    • Как взаимодействуют Model, View и Template в Django.
  • Установка Django и создание первого проекта

    • Установка Django:
      • Создание виртуального окружения
      • Установка Django
    • Создание первого проекта Django
      • Команда для создания проекта
      • Запуск сервера разработки
      • Разбор структуры проекта
    • Создание первого приложения в Django
      • Команда для создания приложения
      • Разбор структуры приложения
      • Подключение приложения в settings.py
    • Основы маршрутизации (urls.py)
      • Что такое маршрутизация?
      • Структура URL-маршрутов в Django:
        • Главный urls.py (основной файл маршрутизации проекта)
        • urls.py внутри приложения (локальные маршруты)
      • Динамические параметры в URL
        • int:id
        • str:username
      • Именованные маршруты (name)
      • Перенаправления и обработка ошибок
      • Регулярные выражения в маршрутах (re_path)

Лекция 23. Шаблоны (Templates) в Django (3 часа)

  • Введение в Django Templates:

    • Что такое шаблоны и зачем они нужны?
    • Где Django ищет шаблоны (TEMPLATES в settings.py).
    • Структура каталога templates/.
    • Как Django рендерит HTML-страницы?
    • Разбор стандартного процесса: - Запрос → URL → View → Template → Ответ пользователю.
  • Базовый синтаксис шаблонного языка:

    • Вывод переменных ({{ }})
    • Шаблонные фильтры (filters)
  • Управляющие конструкции в шаблонах:

    • Условные операторы (if / elif / else)
    • Циклы (for)
  • Наследование шаблонов

    • Базовый шаблон (base.html):
      • Как избежать дублирования кода с помощью {% block %} и {% extends %}.
      • Создание базового шаблона.
      • Использование extends в дочерних шаблонах
  • Подключение CSS, JS и статических файлов:

    • Работа с static/
    • Подключение CSS и SCSS
    • Подключение изображений
    • Включение частей шаблонов (include)
    • Практика

Лекция 24. Модели в Django. Установка и настройка базы данных PostgreSQL. Связи между моделями. Meta, Abstract, Proxy (3 часа)

  • Установка и настройка базы данных PostgreSQL.

    • Создание базы данных и пользователя PostgreSQL.
    • Подключение PostgreSQL к Django.
    • Конфигурация Django
    • Команда migrate
    • Настройка приложения
  • Введение в модели Django и PostgreSQL (20 минут)

    • Что такое модели Django?
    • Модель (Model) – это Python-класс, который представляет таблицу в базе данных.
    • Где хранятся модели? (myapp/models.py).
    • Создание модели
    • Админка
  • Основные типы полей в моделях Django:

    • Текстовые поля:
      • CharField(max_length=...) – строка фиксированной длины.
      • TextField() – большой текст (например, описание).
    • Числовые поля:
      • IntegerField()
      • FloatField()
      • DecimalField()
    • Булевы значения -BooleanField() – True/False.
    • Дата и время -DateTimeField(auto_now_add=True), DateField().
    • EmailField.
    • JSONField (для PostgreSQL)
      • Позволяет хранить JSON-данные.
  • Медиа :

    • Настройка settings.py
    • FileField
    • ImageField
  • Связи:

    • OneToOne
    • ForeignKey
    • ManyToMany
  • class Meta в моделях Django

Лекция 25. Django ORM. Объекты моделей и QuerySet, Meta моделей, Прокси-модели(3 часа)

  • Введение в Django ORM.

    • Что такое Django ORM (Object-Relational Mapping)?
    • Позволяет работать с базой без SQL-запросов.
    • Преобразует Python-классы в таблицы базы данных.
    • Использует QuerySet для работы с записями.
    • Основной принцип ORM:
    • Модели → Объекты Python → Таблицы в базе.
    • Django ORM позволяет работать с разными СУБД (PostgreSQL, MySQL, SQLite).
  • Создание и управление объектами моделей

    • Создание объектов моделей
    • Получение данных (SELECT)
    • Фильтрация данных (WHERE)
    • Обновление записей (UPDATE)
    • Удаление записей (DELETE)
  • Работа с QuerySet:

    • Основные операции с QuerySet
    • Сортировка (order_by)
    • Ограничение выборки (limit и offset)
    • Агрегатные функции (SUM, AVG, COUNT, MIN, MAX)
  • objects и shell

Лекция 26. Forms, ModelForms. User, Authentication в Django(3 часа)

  • Введение в формы Django
    • Что такое формы в Django?
      • Форма позволяет собирать и обрабатывать данные от пользователя.
      • Django автоматически защищает формы от CSRF-атак.
      • CSRF-атака.
    • Типы форм в Django:
      • Forms (ручное создание) – кастомные формы.
      • ModelForms – формы, созданные на основе моделей Django.
  • Создание стандартных форм (Django Forms)
    • Создание формы вручную
    • Отображение формы в шаблоне
    • Обработка формы (POST-запрос)
  • ModelForms – формы на основе моделей
    • Что такое ModelForm?
      • Позволяет автоматически создать форму на основе модели.
      • Упрощает работу с формами и БД.
    • Создание модели
    • Создание ModelForm
    • Использование ModelForm в views.py
  • Пользователь (User) в Django
    • Модель пользователя Django
    • Создание пользователя в Django Shell
    • Расширение модели пользователя
  • Аутентификация пользователей
    • Что такое Аутентификация?
    • Регистрация пользователя
    • Вход в систему
    • Выход из системы
  • Итоговая практика

Лекция 27. Class-Based Views (CBV) в Django.(3 часа)

  • Введение в Class-Based Views (CBV)

    • Что такое CBV и зачем они нужны?
      • Django изначально использует Function-Based Views (FBV).
      • CBV позволяют:
        • Избежать дублирования кода.
        • Автоматизировать стандартные задачи (CRUD).
        • Разделить логику на маленькие переопределяемые методы.
    • Когда использовать CBV, а когда FBV?
  • Основные классы CBV:

    • Class View
    • Class TemplateView - рендер html файлов
    • ListView – вывод списка объектов
    • DetailView – детальная информация об объекте
    • CreateView – создание нового объекта
    • UpdateView – обновление объекта
    • DeleteView – удаление объекта
    • Class RedirectView - перенаправления пользователя на другую страничку
    • Class LoginView - логин пользователя
    • LogoutView - выход пользователя
  • Использование миксинов в CBV:

    • LoginRequiredMixin – доступ только для авторизованных пользователей
    • PermissionRequiredMixin – проверка прав доступа
    • UserPassesTestMixin - более сложные проверки прав пользователей
  • Комбинирование миксинов

Лекция 28: NoSQL. Куки, сессии, кеш. (1.5 часа)

  • Введение в NoSQL
    • Что такое NoSQL и зачем он нужен?
    • Виды NoSQL баз данных
    • Django + NoSQL: Как их совместить?
      • Django по умолчанию поддерживает реляционные базы (PostgreSQL, MySQL).
      • Для работы с NoSQL можно использовать MongoDB (Djongo, pymongo) или Redis.
  • Работа с куками (Cookies) в Django
    • Что такое куки?
    • Работа с куками в Django
      • Установка куки (set_cookie)
      • Чтение куки (request.COOKIES)
      • Удаление куки (delete_cookie)
  • Сессии в Django
    • Что такое сессии?
    • Настройка сессий в Django (settings.py)
    • Работа с сессиями в Django:
      • Сохранение данных в сессию
      • Получение данных из сессии
      • Удаление сессии
  • Кеширование (Cache) в Django
    • Что такое кеш и зачем он нужен?
    • Настройка кеша в settings.py
      • Использование Redis для кеша
      • Простое кеширование представления
      • Кеширование в коде (ручной способ)

Лекция 29. Middleware. Signals. Messages. Manage commands(1.5 часа)

  • Что такое Middleware?
    • Пример работы Middleware:
    • Пользователь отправляет запрос (request → Middleware → View).
    • Django обрабатывает запрос, затем передаёт ответ (response → Middleware → Браузер).
    • Middleware может изменять, фильтровать и логировать запросы и ответы.
    • Встроенные Middleware в Django.
    • Создание кастомного Middleware.
  • Django Signals
    • Что такое сигналы в Django?
    • Создание сигнала.
  • Django Messages
    • Что такое Messages?
      • Подключение.
      • Добавление.
      • Отображения.
  • Manage Commands в Django
    • Что такое Manage-команды?
    • Создание кастомной команды

Лекция 30: Введение в REST API. Основы API. HTTP-запросы. JSON.(1.5 часа)

  • Что такое API?
  • Что такое REST?
  • Основные принципы REST (CRUD, ресурс-ориентированность, стейтлесс).
  • HTTP-запросы:
    • Методы (GET, POST, PUT, DELETE, PATCH).
    • Код ответа (200, 201, 400, 401, 403, 404, 500).
    • JSON как формат передачи данных.

Лекция 31: Django REST Framework. FBV. Установка. Создание API. APIView, ViewSet, Routers. (3 часа)

  • Введение в Django REST Framework (DRF)
  • Что такое Django REST Framework (DRF)?
  • Почему DRF используется для создания API?
  • Упрощает создание API на Django.
  • Встроенная валидация и сериализация.
  • Поддержка аутентификации и авторизации.
  • Как работает API в Django?
    • Клиент отправляет HTTP-запрос.
    • Django обрабатывает запрос и формирует JSON-ответ.
    • Фронтенд-приложение (React, Vue, Angular) получает ответ.
  • Установка и настройка DRF.
    • Установка Django REST Framework
    • Подключение DRF в settings.py
    • Добавление конфигурации REST_FRAMEWORK
  • Function-Based Views (FBV)
    • @api_view(['GET', 'POST'])
    • Добавление маршрутов (urls.py):
    • Response() – возвращаем JSON.
    • Примеры работы API через FBV.
  • Введение в сериализаторы (serializers.py)
    • Что такое сериализаторы и зачем они нужны?
    • Serializer vs ModelSerializer.
    • Примеры сериализации данных.
  • APIView в Django REST Framework
    • Сравнение FBV и APIView
    • Примеры запросов через Postman (GET):
    • Подключить APIView в urls.py
  • Работа с моделями и APIView
    • Создание модели
    • Создание сериализатора
    • Использываниеа APIView с моделями
  • ViewSet:
    • Что такое ViewSet?
    • Создание ViewSet
  • ModelViewSet и ReadOnlyModelViewSet
    • Пример
  • Пагинация
    • Пример
  • Router
    • Что такое Router?
    • Подключение Router в urls.py

Лекция 32: REST аутентификация. Авторизация. Permissions. Фильтрация. (3 часа)

  • Аутентификация и Авторизация
    • Разница между аутентификацией и авторизацией
    • Виды аутентификации в DRF:
      • SessionAuthentication – стандартная Django-сессия (подходит для - веб-приложений).
      • BasicAuthentication – базовая аутентификация по логину и паролю.
      • TokenAuthentication – аутентификация через токены (используется в - API).
      • JWT (JSON Web Token) – более безопасный способ аутентификации для - API.
      • OAuth 2.0 – используется в авторизации через Google, Facebook и - другие сервисы.
    • Подключение аутентификации в settings.py
    • Создание токена для пользователя
  • Permissions в DRF
    • Что такое Permissions?
    • Основные классы Permissions
    • Пример Ограничения доступа к API через Permissions
  • Фильтрация данных в API
    • Что такое фильтрация?
    • Установка и подключение фильтрции
    • Примеры
  • Поиск и сортировка в API

Лекция 33: Тестирование API в Django REST Framework (3 часа)

  • Введение в тестирование API
  • Django TestCase и APIClient
  • Создание тестов для API
    • Тестирование CRUD-операций
    • Тестирование аутентификации (JWT, TokenAuth)
    • Тестирование permissions (проверка доступа)
    • Тестирование фильтрации и пагинации
  • Модульные и интеграционные тесты в DRF
    • Разница между модульными и интеграционными тестами
    • Mocking зависимостей в тестах

Лекция 34. Deployment Django-проекта

  • Введение
    • Что такое деплой?
    • Локальная разработка vs. продакшен
    • Обзор инструментов для развертывания Django
  • Работа со статикой и медиа-файлами
    • Разница между static и media файлами
    • Где хранить статические и медиа-файлы?
    • Настройка settings.py:
      • STATIC_URL, STATICFILES_DIRS, STATIC_ROOT
      • MEDIA_URL, MEDIA_ROOT
    • Использование collectstatic
    • DEBUG=True vs. DEBUG=False
  • Выбор сервера и подготовка окружения
    • Обзор хостинговых решений (VPS, облачные серверы)
    • Почему Amazon EC2?
    • Регистрация в AWS и создание инстанса
    • Подключение к серверу через SSH
  • Установка необходимых зависимостей
    • Обновление системы
    • Установка Python, pip, виртуального окружения
    • Установка PostgreSQL и настройка базы данных
    • Создание базы данных и пользователя
  • Настройка Django-проекта для продакшена
    • Создание .env файла для хранения секретных данных
    • Разделение settings.py на settings_local.py и settings_prod.py
    • Указание ALLOWED_HOSTS и DEBUG=False
    • Подключение к PostgreSQL в settings_prod.py
  • Запуск Django-проекта на сервере
    • Клонирование репозитория
    • Настройка виртуального окружения
    • Применение миграций
    • Тестовый запуск Django через runserver
  • Настройка Gunicorn
    • Что такое WSGI и почему Gunicorn?
    • Установка Gunicorn
    • Запуск приложения с Gunicorn
    • Демонизация Gunicorn с systemd
    • Создание gunicorn.service и gunicorn.socket
    • Запуск Gunicorn как службы
  • Настройка Nginx как обратного прокси-сервера
    • Что такое обратный прокси?
    • Установка и настройка Nginx
    • Создание конфигурационного файла Nginx
    • Настройка проксирования запросов на Gunicorn
    • Перезапуск Nginx
  • Хранение статики и медиа на AWS S3
    • Почему S3 лучше для хранения файлов?
    • Создание S3 Bucket
    • Настройка django-storages и boto3
    • Обновление settings.py для работы с S3
    • Проверка работы статики и медиа
  • Подключение домена через AWS Route 53
    • Регистрация домена
    • Настройка DNS-записей
    • Обновление ALLOWED_HOSTS в settings_prod.py
    • Настройка домена в конфигурации Nginx
  • Настройка HTTPS с Certbot
    • Почему важен HTTPS?
    • Установка Certbot
    • Получение SSL-сертификата
    • Автоматическое продление сертификатов
  • Оптимизация и финальная проверка
    • Открытие необходимых портов на сервере
    • Проверка логов Nginx и Gunicorn
    • Настройка supervisor (по желанию)
    • Мониторинг серверных процессов
  • Вопросы и ответы
    • Разбор ошибок, вопросы слушателей
    • Рекомендации по дальнейшему изучению