Пет-проект на Python за 50 минут. Курс по FastAPI для начинающих [2024]
Vložit
- čas přidán 8. 05. 2024
- Разбор фреймворка FastAPI на языке Python с первых строчек до деплоя на реальный сервер.
Текстовая версия: slc.tl/5nqib
Облачный сервер для ваших проектов: slc.tl/3c00t
Освой backend разработку на Python с НУЛЯ до развертывания в продакшн за 3 месяца: clck.ru/38iU5C
🚨 Продажи открыты только до 31 мая 2024 года! 🚨
Прочитать отзывы к курсу можно на Stepik: clck.ru/38ZdhZ
Пишу про лайфхаки при поиске работы, рынок труда и способы развития разработчиков в телеграм канале - подписывайся: 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 #шумейко
Освой backend разработку на Python с НУЛЯ до развертывания в продакшн за 3 месяца: clck.ru/38iU5C
🚨 Продажи открыты только до 31 мая 2024 года! 🚨
Прочитать отзывы к курсу можно на Stepik: clck.ru/38ZdhZ
Как же круто! Все понятно, четко структурированно, речь грамотная, смотреть и слушать приятно! Спасибо огромное за урок!
Благодарю за труды. Вы помогаете сориентироваться в открытом океане информации. Пойдёшь не туда и пару дней впустую ))
Спасибо огромное за вашы видео. прошу продолжайте выпускать видео!!!
Супер!❤
Первый ютубер которого смотрел на 0.8-0.9х 😂 Спасибо за годные курсы!
То же самое: первый раз ставил на 0.75 подобный урок. Обычно ставлю на 1.25 -1.5.
Отличнейшее видео для начинающих фастаперов! Рекомендейшн! 5 звезд, благодарочка и пожелание удачи!
🔥 лучший
Обожаю видосы твои, слушать очень приятно!!!😁
спасибо!
Блин с твоей подачей бы хотел курс про докер послушать, прикольно рассказываешь. Да и в целом про деплой и ci/cd штучки
Иногда хочется и контента для уже не совсем начинающих, может какие то средние проекты или фишки/лайфхаки, у тебя хорошая подача так что будет интересно посмотреть
Это есть в его платном курсе) Сам прошел доволен как слон. На работе переделываю некоторые проекты сейчас на FastApi
Спасибо!
Спасибо за видео!
11:05 Нужно обратить внимание, в видео не говориться, когда в параметрах функции используется Annotated[STaskAdd, Depends()], в запросе post, то он использует query Params, вместо body Params.
СПАСИБО ВАМ ОГРОМНОЕ!
пожалуйста) приятно слышать
Спасибо
спасибо) очень познавательно)
спасибо! успехов в изучении
Cool!!!
Спасибо за качественные обучающие видео! Было бы очень интересно еще интеграция ML и Fastapi👍
Очень полезный ролик! Спасибо! Все сделал, все работает) хочу сделать свое приложение. Следующие шаги: подключить posgresql и фронт
спасибо большое! очень рад, что вам понравилось
скоро на канале будет больше видео для новичков, в том числе по фронтенду
Замечательный туториал! Сам ML-разработчик - решил иучить FastAPI, т.к. вижу, что фреймворк очень популярен. Было бы очень круто, если бы выша серия про FastAPI + ML
Сам устраиваюсь после вуза в лабораторию машинного обучения, поэтому интересно поинтересоваться, а для чего вам технологии web-разработки?
от слова 'тасочки/-а' чуть нервный срыв не случился
11:35 при использовании депендс в схеме для пост запроса, то параметры передаются в квери а не боди а значит урезаются в количетсве символов передачи и они не кодируются и тем самым видны всем, так что при использовании схемы в методе пост не желательно использовать депендс для создания можно как дополнительные параметры для создания объекта
хорошее замечание, спасибо
Ml + Fast api очень интересно
Привет, как всегда вы невероятно круто объясняете! а можно попросить вас сделать туториал, возможна за плату по NGINX для разработки Fullstack application based on FastAPI
Для более правильногго создания фастапи приложения используя паттерн репозиторий так же можно создать базовый абстрактный класс BaseRepo, от которого будут наследоваться конретные репозитории и там описать CRUD методы
Вопрос не по теме ролика: как с помощью подключения fastapi_users роутера у нас получаются post запросы в swager(fastapi/docs). Просто я ломаю голову и не понимаю. Обычно,создавая роутер мы в файле прописываем все нужные нам post , get, и др.
Я смотрел зависимости, изучал документацию, там ничего путного не написано. Просто хочу реализовать форму для аутентификации на фронте, и чтобы данные передавались в нужный /auth/jwt/ post запрос
UPD: Про swager я имел ввиду доки fastapi
Хорош!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Привет, классный курс, не хочешь разобрать такую тему как RBAC + FastAPI, на русском видосы почти не нашел))
хороший гайд! спасибо!
Вопрос: как настроить PyCharm когда прописываешь атрибуты, функий и.т.д Pycharm автоматически импортировал модули ?
Нужно работать внутри виртуального окружения и активировать его внутри PyCharm’а
Спасибо большое)Про alembic будет видео?)
Уже есть
czcams.com/video/SD6_EPg0Aqk/video.html
Здравствуйте, Артем, такие два вопроса, я посмотрел ваши видео по fastapi , как раз писал одностраничный "фоторедактор" и у меня такие вопросы.
Я передаю файл и ещё один параметр num в formData при помощи ajax, как мне считать данные из этой формы, так чтобы там загрузить файл на сервер и вытащить num?
И как можно создать ссылку на файл на сервере? Я имею ввиду то, что вот произошли преобразования с изображением, оно сохранилось, я получил его filename и как теперь сделать так, чтобы он(файл) отобразился на клиенте? По аналогии с нодой я создал отдельный роут гет для отображения файлов с fileResponse и отдельно создаю ссылку таким же методом. Однако она даже как будто не подставляется в стили... Я написал, чтобы картинка была в background и подставляю ее при помощи jQuery, хочу сказать, что если пользователь меняет файлики, то все работает
Буду невероятно признателен, если поможете, неделю сижу, ничего толком не нашел
Для парсинга данных из FormData на стороне FastAPI нужен Form(). Дока тут: fastapi.tiangolo.com/tutorial/request-forms/?h=form
Про картинку не до конца понял. Картинку можно сохранить локально на бэке, в базу данных или S3 хранилище. Можно сделать GET ручку на получение картинки, если она лежит в базе или на диске, а если в S3, то на фронт можно отправлять URL самой картинки, чтобы браузер сходил сам за картинкой
@@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...
@@rimashi1089 > Где file и num это ключи по которым я добавил значения в formData?
Да.
По поводу отображения файла. В параметр path вы должны указать адрес файла по типу /static/{filename}.jpg, а не просто /static
Вообще, заходите в мое сообщество, вам там помогут: t.me/python_community_rus
@@artemshumeiko спасибо, вы уже очень помогли, и хотя бы прочитали и дали ответ, спасибо.
А, и благодарю за ваши прекрасные курсы - плейлисты, я считаю, что так и должны выглядеть доки в общем виде)
Спасибо за видео!
31:38 Не подскажите, а почему не используется просто респонс модел в роутере для этой цели (репозиторий возвращает объект БД)? - Что-то типа @router.get("/", response_model=List[STask])?
И еще: поддерживаю идею показать ML+FastAPI, очень хотелось бы.
И присоединяюсь к предложению-просьбе о таком же базовом уроке/курсе, только уже не для начинающих, а для начинающих с Фастапи но с опытом разработки на других фреймворках.
Т.е. показать базовый пример (принимая во внимание, что основы должны быть уже известны) полноценного мелкого проекта, но с уклоном в реальную разработку (постгрес с докером разделение на настройки проекта для прода, дева, базовые тесты) и тоже все это верхнеуровнево, чтобы просто увидеть как оно относительно типично, только с Фастапи.
Мне кажется, сейчас много уроков именно для начинающих в программировании, но мало для тех, кто имеет опыт, и хочет освоить инструмент уже как очередной. А тут бы как раз и посмотреть на реальные примеры из коммерческой разработки. Т.к. в мануалах этого тоже не увидишь.
Еще раз спасибо и успехов!
docs не открывается. ошибки выдает Failed to load API definition.
у меня в репозитории, когда я таски сериализую с Pydantic, через model_validate, выдаёт ошибку. Это может быть связано с тем, что я в модельке в ORM поля задаю не при помощи Mapped, а при помощи Column?
нет, разница быть не должно
Можете задать вопрос и прикрепить скриншоты в нашем Python сообществе: t.me/python_community_rus
Вам помогут с вопросом
@@artemshumeiko Артем, очень заинтересовал вопрос подключения платежных систем(Freekassa, Enotio, Sberpay) в микросервис
e-commerce реализованный на fastapi.Нашел только связку fastapi+Stripe, но cистема не работает в РФ, можно где то найти шаблон реализации?
То же самое
Добавьте в STask model_config = ConfigDict(from_attributes=True)
Привет. Можешь поделиться знаниями по CD/CI?
да, планирую в будущем показать как самостоятельно сделать CI/CD для своего сервера
возвращать none там, где мы можем вернуть пустое значение не стоит.
раскажите о ci/cd
Есть возможность портировать твой курс по FastAPI так же на платформу Udemy? Очень хотелось бы его пройти, но из-за границы нет возможности(
Можно оплатить курс через Boosty: boosty.to/artemshumeiko или криптой, и я выдам вам доступ до всех материалов
Можете написать в телегу по любым вопросам оплаты: t.me/artem_shumeiko_support
Пытаюсь сейчас вместо нотификации по паролю - сделать как у вастрика на сайте - по запросу генерируется 6-ти значное число, отправляется на почту и в телеграмм, человек его вводит - и ему выдают аутентификацию.
Столкнулся с тем, что в fastapi users очень сложно отключить использование пароля для аутентификации...
Хранить это 6-ти значное число в текущем поле hashed password не хочу - т.к. число влазит в 4 байта - и хранить его в 1024 символах с шифрованием - очень неэффективно.
Если есть возможность снять на эту тему видео - было бы здорово!
звучит круто
запишу в список идей для видео
Привет, а что за плагин, что подсвечивает сколько раз использован класс?
Это видимо только в Professional версии PyCharm
Здравствуйте а ваш кур платный или бесплатный ?
Тот, что рекламируется в видео - платный
Подробнее тут: artemshumeiko.ru
Ошибка, чаще 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]
спасибо, что помогаете другим!
на 48:25 решается эта проблема :D
Спасибо, человечище)
А чем отличается этот курс от курса платного?
Здесь мы рассмотрели примерно одну сотую от курса.
В курсе подробно разбираются темы работы с БД, авторизацией, кэшированием, асинхронными задачами, логированием, тестированием, мониторингом.
Полную программу курса можно посмотреть здесь: artemshumeiko.ru/#rec685694893
Slim?? Хм
Посмотрел на 2х
Куда подавать резюме ?
Ну это для каких-то слишком начинающих. Не думаю, что людям, не знающим что делают requirements.txt, надо уметь пользоваться fastAPI
ни хрена не понятно!
:'(
Annotated Depends() Чёт не работае.
Ты самый пиздатый
вот что тут бесит это автоимпорты которые даже не показываются....