Python з нуля — теми
- Вступ
- Що таке Python
- Чому Python, де і як він використовується
- Python 2 vs Python 3
- Інтерпретатор
- Виконання написаних програм
- Літерали, типи об’єктів
- Операції над об’єктами: оператори, виклики функцій
- Логічна конструкція
if
- Цикли
while
, for
- Функції
- Що таке функція, синтаксис запису функцій
- Область видимості для функцій
- Передача параметрів
- Коментарі
- Об’єкти, контейнери, вийнятки
- Що таке об’єкт
- Стандартні типи контейнерів:
list
, set
, dict
, tuple
- Що таке алгоритми, чим відрізняються швидкості виконання операцій в різних контейнерах
- Ітеровані типи, ітератори, генератори
- Коротки записи побудови контейнерів:
list
/set
/dict
comprehension
- Вийнятки, обробка вийнятків (блок
try-except
)
- Менеджер контексту
- Модулі
- Модулі, команди імпортування
- Пакети,
__init__.py
- Шляхи при імпортуванні, відносне імпортування
- Пріоритет імпортування, стандартна бібліотека, встановленні пакети
- Огляд стандартної бібліотеки
__builtins__
collections
datetime
math
random
statistics
itertools
operator
os
sys
- Екосистема сторонні пакети, PyPI
- virtualenv
- pip
- Класи
- Об’єктно-орієнтоване програмування
- Типи об’єктів у Python
- Об’єкти і класи
- Визначення класів за допомогою конструкції class
- Атрибути, методи,
self
- Статичні атрибути, статичні методи
- Наслідування
- Функція
super
- Клас
object
, класи нового стилю і класи старого стилю
- Множинне наслідування, MRO
- Різниця в MRO в класах нового стилю і в класах старого стилю
- Тести, nose, pytest
- Веб-розробка
- Інтернет, протоколи
- Стек TCP/IP
- Модель OSI, модель TCP/IP
- Огляд протоколів: IP, TCP, UDP, TLS, DNS, HTTP
- Що таке Web, Web-сайти, Web-застосування
- Протокол HTTP
- Структура запитів
- Структура відповідей
- Веб-фреймворки для Python
- Огляд Django
- MVC / MVT
- Встановлення django у віртуальне середовище
- Створення простого Hello World застосування
- Вступ до Django
- Структура проекту на Django
- Налаштування
- Конфігурація URL-маршрутів
- Регулярні вирази (
^
, $
, \d
, .
, []
)
- Створення Django app
- Створення view-функцій
- HTTPRequest
- Метод
- Заголовки
- URL-параметри
- HTTPResponse
- Передача параметрів у view-функції з URLconf
- Шаблони, контексти шаблонів
- Створення простих шаблонів з операцією підстановки змінних
- Шаблони, верстка
- Структура HTML-документів (
head
, body
)
- Типографіка в HTML (
h*
, strong
, em
, p
)
- Додаткова розмітка (
a
, section
, article
, div
)
- HTML-escaping, приклад XSS-атаки
- CSS-стилі, класи
- Наслідування шаблонів
- Включення шаблонів
- Цикл for у шаблонах
if
у шаблонах
url
template tag
- Практика з Bootstrap
- Підключення стилів (link)
- Динамічні vs статичні файли
- Подання статичних файлів у Django
static
template tag
- Моделі
- Реляційна модель
- ER-модель
- Складнощі проектування реляційних баз, нормалізація
- Проектування в ER-моделі
- ORM
- Реляційні бази даних: SQLite, PostgreSQL, MySQL
- Визначення моделей в Django
- Поля даних:
TextField
, CharField
, IntegerField
, DateTimeField
, EmailField
, FileField
- Поля відношень:
ForeignKey
, ManyToManyField
, OneToOneField
- Метод
get_absolute_url
, функція reverse
- Міграції
- Практика з адмінкою
- Менеджери, QuerySet API (
filter
, get
)
- Локалізація проекту
ugettext
, trans
template tag
- Класові представлення, форми
- Навіщо класові представлення
- CRUD-застосування
DetailView
, ListView
CreateView
, UpdateView
- Форми в HTML
- Інструменти для створення форм в Django
- Валідація форм,
clean
- CSRF-атака
- FormView
- Базові CBV:
View
, TemplateView
, RedirectView
- Життєвий цикл виконання методів в СBV. Перетворення СBV у view-функції
- Перевизначення методів:
get_context_data
, get_queryset
- Cтворення складних СBV за допомогою домішків:
SingleObjectMixin
, MultipleObjectsMixin
, FormMixin
- Авторизація і автентифікація,
login_required
- Запуск на сервер
- djangopackages.com
- Огляд серверних технологій: Nginx, gunicorn, Postgres, Celery, Redis, Varnish
- Як відбувається scaling продукту
- Хостинги, VPS, IaaS, PaaS: Heroku, Openshift, Digital Ocean, Linode
- Підготовка Django-проекту до запуску: Debug, статичні файли, криптографічні секрети, Django deploy check-list
- Запуск на Heroku
Речі, що НЕ розглядаються в деталях:
- Алгоритми (окрім як для базових контейнерів
list
, dict
, set
), побудова алгоритмів
- Дескриптори,
@property
- Декоратори, метапрограмування (
__new__
)
- Unicode
- SQL
- REST
- JavaScript
- AJAX
- sessions (Django)
- middleware (Django)
- context processors (Django)
- кастомні template tags (Django)
- signals (Django)
- messages (Django)
- permissions (Django models)
- Популярні пакети для Django, як haystack, Django CMS, etc.