Python: Веб-разработка (Flask)
Теория: Персистентность
Среди сайтов выделяют «статические» — сайты, которые представляют собой готовый набор HTML-страниц. Например, так сделаны наши руководства на https://guides.hexlet.io/ru/. Удобно, быстро и дешево. Статическим сайтам не нужно куда-то сохранять информацию, их данные хранятся прямо в HTML.
Чтобы создать статические сайты, используют специальные генераторы, например, https://jekyllrb.com/.
Остальным сайтам повезло меньше. Всё, что создается пользователем, нужно куда-то сохранять. Самый простой способ сохранять — использовать файлы. Насколько он простой, настолько же нерабочий. Блокировки файловой системы не позволят работать с файлом в конкурентной среде. Такой средой является веб, когда с сайтом могут одновременно работать сотни тысяч пользователей.
Поэтому важно понимать устройство операционных систем. https://ru.hexlet.io/pages/recommended-books
Возможность долговременного хранения состояния называется персистентностью. Для персистентного или постоянного хранения данных принято использовать специализированные программы — базы данных. Взаимодействие с ними строят двумя способами:
- Напрямую через библиотеку, которая предназначена для данной базы данных
- Через ORM, которая в большинстве случаев прячет базу данных за большим количеством абстракций
Тема хранения данных очень глубока и требует определенной подготовки. Но профессия построена так, чтобы мы как можно быстрее добрались до веба и научились с ним работать. По этой причине в следующих уроках данные пользователя будут сохраняться в сессии — механизм работающий поверх Cookie. Это будет делаться через предоставленную абстракцию репозитория:
Репозиторий отвечает за хранение конкретной сущности. Для каждой свой: пользователи — UserRepository, машины — CarRepository и так далее.
Все репозитории в следующих уроках созданы специально для этого курса. Они не являются частью фреймворка Flask или ORM. Исходные файлы любого репозитория доступны в практике.

