Пет-проект на Python за 50 минут. Курс по FastAPI для начинающих [2024]
Разбор фреймворка FastAPI на языке Python с первых строчек до деплоя на реальный сервер.
Текстовая версия: slc.tl/5nqib
Облачный сервер для ваших проектов: slc.tl/3c00t
💡 Попробуй онлайн-тренажёр для подготовки к техническому собеседованию: clck.ru/3B5gxT 💡
Предзапись на курс по поиску работы разработчику и техническим навыкам для Middle: forms.gle/Zw7bPnQvTsfekVH47
Забирай роадмап изучения самого востребованного фреймворка на Python - FastAPI здесь: t.me/ArtemShumeikoBot
Пишу про лайфхаки при поиске работы, рынок труда и способы развития разработчиков в телеграм канале - подписывайся: t.me/artemshumeiko
Python сообщество в телеграме (здесь тебе помогут с любым вопросом): t.me/python_community_rus
Полезные материалы для бэкендера в моем телеграм боте: t.me/ArtemShumeikoBot
Поддержать меня и получить ранний доступ к видео можно здесь: boosty.to/artemshumeiko
Ссылка на репозиторий здесь: t.me/artemshumeiko/64
0:00 - Для чего используется FastAPI
2:39 - Как написать простейшее приложение на FastAPI
6:26 - Как применять Pydantic в FastAPI
11:48 - Как работать с базой данных из FastAPI
19:44 - Как делать запросы к базе данных через паттерн репозиторий
26:37 - Что такое роутер в FastAPI
34:23 - Как развернуть FastAPI приложение через Docker
39:02 - Как развернуть FastAPI приложение на реальный сервер в облаке
#backend #python #fastapi #фастапи #pydantic #шумейко
Пікірлер: 96
💡 Попробуй онлайн-тренажёр для подготовки к техническому собеседованию: clck.ru/3B5gwP 💡 Забирай роадмап изучения самого востребованного фреймворка на Python - FastAPI здесь: t.me/ArtemShumeikoBot
Как же круто! Все понятно, четко структурированно, речь грамотная, смотреть и слушать приятно! Спасибо огромное за урок!
Первый ютубер которого смотрел на 0.8-0.9х 😂 Спасибо за годные курсы!
@andreypopov4916
Ай бұрын
То же самое: первый раз ставил на 0.75 подобный урок. Обычно ставлю на 1.25 -1.5.
Благодарю за труды. Вы помогаете сориентироваться в открытом океане информации. Пойдёшь не туда и пару дней впустую ))
Сделал небольшой апишник на FastAPI(типа заеженного блога, но со своими приколами, по типу аунтефикации через токены и т. д), удивился насколько всё легко и круто, прям понравился процесс. Буквально за часов 5, понял как тут всё функционирует, с кайфом пишу
Спасибо огромное за вашы видео. прошу продолжайте выпускать видео!!!
Отличнейшее видео для начинающих фастаперов! Рекомендейшн! 5 звезд, благодарочка и пожелание удачи!
Иногда хочется и контента для уже не совсем начинающих, может какие то средние проекты или фишки/лайфхаки, у тебя хорошая подача так что будет интересно посмотреть
@silverguard3638
3 ай бұрын
Это есть в его платном курсе) Сам прошел доволен как слон. На работе переделываю некоторые проекты сейчас на FastApi
Замечательный туториал! Сам ML-разработчик - решил иучить FastAPI, т.к. вижу, что фреймворк очень популярен. Было бы очень круто, если бы выша серия про FastAPI + ML
@user-ew2qs9my3s
Ай бұрын
Сам устраиваюсь после вуза в лабораторию машинного обучения, поэтому интересно поинтересоваться, а для чего вам технологии web-разработки?
Блин с твоей подачей бы хотел курс про докер послушать, прикольно рассказываешь. Да и в целом про деплой и ci/cd штучки
Спасибо! Благодаря тебе я смог написать свое первое работающее приложение на react с серверной частью на fastapi. Жду новых видео. Продолжай снимать, пожалуйста!
@artemshumeiko
26 күн бұрын
очень рад! спасибо если интересен фуллстак, обязательно сниму еще кое-что на реакт или вью
Супер!❤
Обожаю видосы твои, слушать очень приятно!!!😁
@artemshumeiko
3 ай бұрын
спасибо!
Спасибо за видео! 11:05 Нужно обратить внимание, в видео не говориться, когда в параметрах функции используется Annotated[STaskAdd, Depends()], в запросе post, то он использует query Params, вместо body Params.
СПАСИБО ВАМ ОГРОМНОЕ!
@artemshumeiko
Ай бұрын
пожалуйста) приятно слышать
спасибо) очень познавательно)
@artemshumeiko
Ай бұрын
спасибо! успехов в изучении
🔥 лучший
Спасибо!
Спасибо
Cool!!!
от слова 'тасочки/-а' чуть нервный срыв не случился
Вопрос не по теме ролика: как с помощью подключения fastapi_users роутера у нас получаются post запросы в swager(fastapi/docs). Просто я ломаю голову и не понимаю. Обычно,создавая роутер мы в файле прописываем все нужные нам post , get, и др. Я смотрел зависимости, изучал документацию, там ничего путного не написано. Просто хочу реализовать форму для аутентификации на фронте, и чтобы данные передавались в нужный /auth/jwt/ post запрос UPD: Про swager я имел ввиду доки fastapi
26:10 Выделяешь нужный участок кода, жмешь F6 (или через контекстное меню Refactor -> Move) и просто указываешь, в какой файл переместить, PyCharm сам все перетащит и импорты обновит
Спасибо за качественные обучающие видео! Было бы очень интересно еще интеграция ML и Fastapi👍
Очень полезный ролик! Спасибо! Все сделал, все работает) хочу сделать свое приложение. Следующие шаги: подключить posgresql и фронт
@artemshumeiko
2 ай бұрын
спасибо большое! очень рад, что вам понравилось скоро на канале будет больше видео для новичков, в том числе по фронтенду
Спасибо за урок!!! На 11:38 возникает проблема: module 'asyncio.tasks' has no attribute 'append' - что я делаю не так? РЕШИЛОСЬ с помощью текстовой версии. Спасибо!
11:35 при использовании депендс в схеме для пост запроса, то параметры передаются в квери а не боди а значит урезаются в количетсве символов передачи и они не кодируются и тем самым видны всем, так что при использовании схемы в методе пост не желательно использовать депендс для создания можно как дополнительные параметры для создания объекта
@artemshumeiko
3 ай бұрын
хорошее замечание, спасибо
Ml + Fast api очень интересно
Подскажите, пожалуйста. Хоть unicorn перезагружается, но иногда походу где-то висит...и хоть что не делай работает по старому. Только ребут помогает, как убрать такое
docs не открывается. ошибки выдает Failed to load API definition.
Для более правильногго создания фастапи приложения используя паттерн репозиторий так же можно создать базовый абстрактный класс BaseRepo, от которого будут наследоваться конретные репозитории и там описать CRUD методы
Спасибо большое)Про alembic будет видео?)
@artemshumeiko
3 ай бұрын
Уже есть kzread.info/dash/bejne/hXhqwaeJl5Onoc4.html
Привет, как всегда вы невероятно круто объясняете! а можно попросить вас сделать туториал, возможна за плату по NGINX для разработки Fullstack application based on FastAPI
хороший гайд! спасибо! Вопрос: как настроить PyCharm когда прописываешь атрибуты, функий и.т.д Pycharm автоматически импортировал модули ?
@artemshumeiko
Ай бұрын
Нужно работать внутри виртуального окружения и активировать его внутри PyCharm’а
Привет, классный курс, не хочешь разобрать такую тему как RBAC + FastAPI, на русском видосы почти не нашел))
у меня в репозитории, когда я таски сериализую с Pydantic, через model_validate, выдаёт ошибку. Это может быть связано с тем, что я в модельке в ORM поля задаю не при помощи Mapped, а при помощи Column?
@artemshumeiko
3 ай бұрын
нет, разница быть не должно Можете задать вопрос и прикрепить скриншоты в нашем Python сообществе: t.me/python_community_rus Вам помогут с вопросом
@Leha_from_Zavod
3 ай бұрын
@@artemshumeiko Артем, очень заинтересовал вопрос подключения платежных систем(Freekassa, Enotio, Sberpay) в микросервис e-commerce реализованный на fastapi.Нашел только связку fastapi+Stripe, но cистема не работает в РФ, можно где то найти шаблон реализации?
@busipac1467
3 ай бұрын
То же самое
@vovchic3593
3 ай бұрын
Добавьте в STask model_config = ConfigDict(from_attributes=True)
Привет, а что за плагин, что подсвечивает сколько раз использован класс?
@artemshumeiko
2 ай бұрын
Это видимо только в Professional версии PyCharm
Привет. Можешь поделиться знаниями по CD/CI?
@artemshumeiko
3 ай бұрын
да, планирую в будущем показать как самостоятельно сделать CI/CD для своего сервера
Привет. Возникает такая ошибка, вроде весь синтаксис перепроверил, но не могу найти где проблема: Input should be a valid dictionary or instance of STask [type=model_type, input_value=, input_type=TaskOrm]. Возникает, когда запрос GET отправляешь.
@artemshumeiko
17 күн бұрын
досмотрите до конца пожалуйста, там есть решение, или загляните в гитхаб с кодом проекта Вкратце, мы забыли добавить атрибут model_config = ConfigDict(from_attributes=True) в TaskOrm
Здравствуйте, Артем, такие два вопроса, я посмотрел ваши видео по fastapi , как раз писал одностраничный "фоторедактор" и у меня такие вопросы. Я передаю файл и ещё один параметр num в formData при помощи ajax, как мне считать данные из этой формы, так чтобы там загрузить файл на сервер и вытащить num? И как можно создать ссылку на файл на сервере? Я имею ввиду то, что вот произошли преобразования с изображением, оно сохранилось, я получил его filename и как теперь сделать так, чтобы он(файл) отобразился на клиенте? По аналогии с нодой я создал отдельный роут гет для отображения файлов с fileResponse и отдельно создаю ссылку таким же методом. Однако она даже как будто не подставляется в стили... Я написал, чтобы картинка была в background и подставляю ее при помощи jQuery, хочу сказать, что если пользователь меняет файлики, то все работает Буду невероятно признателен, если поможете, неделю сижу, ничего толком не нашел
@artemshumeiko
Ай бұрын
Для парсинга данных из FormData на стороне FastAPI нужен Form(). Дока тут: fastapi.tiangolo.com/tutorial/request-forms/?h=form Про картинку не до конца понял. Картинку можно сохранить локально на бэке, в базу данных или S3 хранилище. Можно сделать GET ручку на получение картинки, если она лежит в базе или на диске, а если в S3, то на фронт можно отправлять URL самой картинки, чтобы браузер сходил сам за картинкой
@rimashi1089
Ай бұрын
@@artemshumeiko да, я читал эту статью, но не до конца понял, т.е. вот у нас функция (file: Annotated[file, Form()], num: Annotated[int, Form()] Где file и num это ключи по которым я добавил значения в formData? По поводу изображения...оно лежит локально в папке на сервере, я написал эндпоинт для отображения этого изображения @app.get("show/{filename}") def show_images(filename: str) return FileResponse(path='/static/', mimetype='image/png') И вот оно не работает...на клиенте я указываю ссылку как /show/filename и...он как будто не подставляет ссылку, на бэке вроде ошибок нет и в логах пусто...лишь ошибка ajax'a, какая именно не понятно, там просто ajax error и следом 404...
@artemshumeiko
29 күн бұрын
@@rimashi1089 > Где file и num это ключи по которым я добавил значения в formData? Да. По поводу отображения файла. В параметр path вы должны указать адрес файла по типу /static/{filename}.jpg, а не просто /static Вообще, заходите в мое сообщество, вам там помогут: t.me/python_community_rus
@rimashi1089
29 күн бұрын
@@artemshumeiko спасибо, вы уже очень помогли, и хотя бы прочитали и дали ответ, спасибо. А, и благодарю за ваши прекрасные курсы - плейлисты, я считаю, что так и должны выглядеть доки в общем виде)
Пытаюсь сейчас вместо нотификации по паролю - сделать как у вастрика на сайте - по запросу генерируется 6-ти значное число, отправляется на почту и в телеграмм, человек его вводит - и ему выдают аутентификацию. Столкнулся с тем, что в fastapi users очень сложно отключить использование пароля для аутентификации... Хранить это 6-ти значное число в текущем поле hashed password не хочу - т.к. число влазит в 4 байта - и хранить его в 1024 символах с шифрованием - очень неэффективно. Если есть возможность снять на эту тему видео - было бы здорово!
@artemshumeiko
3 ай бұрын
звучит круто запишу в список идей для видео
Хорош!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Есть возможность портировать твой курс по FastAPI так же на платформу Udemy? Очень хотелось бы его пройти, но из-за границы нет возможности(
@artemshumeiko
3 ай бұрын
Можно оплатить курс через Boosty: boosty.to/artemshumeiko или криптой, и я выдам вам доступ до всех материалов Можете написать в телегу по любым вопросам оплаты: t.me/artem_shumeiko_support
Спасибо за видео! 31:38 Не подскажите, а почему не используется просто респонс модел в роутере для этой цели (репозиторий возвращает объект БД)? - Что-то типа @router.get("/", response_model=List[STask])? И еще: поддерживаю идею показать ML+FastAPI, очень хотелось бы. И присоединяюсь к предложению-просьбе о таком же базовом уроке/курсе, только уже не для начинающих, а для начинающих с Фастапи но с опытом разработки на других фреймворках. Т.е. показать базовый пример (принимая во внимание, что основы должны быть уже известны) полноценного мелкого проекта, но с уклоном в реальную разработку (постгрес с докером разделение на настройки проекта для прода, дева, базовые тесты) и тоже все это верхнеуровнево, чтобы просто увидеть как оно относительно типично, только с Фастапи. Мне кажется, сейчас много уроков именно для начинающих в программировании, но мало для тех, кто имеет опыт, и хочет освоить инструмент уже как очередной. А тут бы как раз и посмотреть на реальные примеры из коммерческой разработки. Т.к. в мануалах этого тоже не увидишь. Еще раз спасибо и успехов!
раскажите о ci/cd
Будет ли другой курс? Я живу в другой стране, а человек который меняет деньги в отъезде!!!!! Очень хочу его пройти!
@artemshumeiko
17 күн бұрын
Напишите мне в телеграм @artem_shumeiko_support - помогу с оплатой из-за рубежа
Здравствуйте а ваш кур платный или бесплатный ?
@artemshumeiko
Ай бұрын
Тот, что рекламируется в видео - платный Подробнее тут: artemshumeiko.ru
возвращать none там, где мы можем вернуть пустое значение не стоит.
Народ у кого Swagger docs и redoc не открывается?
А чем отличается этот курс от курса платного?
@artemshumeiko
3 ай бұрын
Здесь мы рассмотрели примерно одну сотую от курса. В курсе подробно разбираются темы работы с БД, авторизацией, кэшированием, асинхронными задачами, логированием, тестированием, мониторингом. Полную программу курса можно посмотреть здесь: artemshumeiko.ru/#rec685694893
Ошибка, чаще apache чем nginx)
Для тех у кого возникла ошибка на 32 минуте видео pydantic_core._pydantic_core.ValidationError: 1 validation error for STask Input should be a valid dictionary or instance of STask [type=model_type, input_value=, input_type=TasksOrm] Необходимо объект TasckOrm конвертирвать в словарь с помощью метода .__dict__ task_schemas = [STask.model_validate(task_model.__dict__) for task_model in task_models]
@artemshumeiko
2 ай бұрын
спасибо, что помогаете другим! на 48:25 решается эта проблема :D
@balbesina228
Ай бұрын
Спасибо, человечище)
24:40 "Заэкзекъють нам эту квэри, если по-русски говорить" (с)
Посмотрел на 2х Куда подавать резюме ?
Ну это для каких-то слишком начинающих. Не думаю, что людям, не знающим что делают requirements.txt, надо уметь пользоваться fastAPI
Slim?? Хм
ни хрена не понятно!
@artemshumeiko
3 ай бұрын
:'(
Annotated Depends() Чёт не работае.
Ты самый пиздатый
вот что тут бесит это автоимпорты которые даже не показываются....