FastAPI - Как использовать Depends #14

  Рет қаралды 15,665

Артём Шумейко

Артём Шумейко

Күн бұрын

💡 Попробуй онлайн-тренажёр для подготовки к техническому собеседованию: clck.ru/3B5gxT 💡
Предзапись на курс по поиску работы разработчику и техническим навыкам для Middle (FastAPI): forms.gle/Zw7bPnQvTsfekVH47
Забирай роадмап изучения самого востребованного фреймворка на Python - FastAPI здесь: t.me/ArtemShumeikoBot
Репозиторий на Github с кодом из видео: t.me/artemshumeiko/9
Мой телеграм-канал: t.me/artemshumeiko
Телеграм-сообщество: t.me/python_community_rus
Поддержать канал:
Boosty: boosty.to/artemshumeiko
В этом видео мы узнаем, что такое Depends и как используется. Depends используется повсеместно, поэтому важно понимать, в каких случаях нужно им пользоваться.
0:00 - Вступление
0:58 - Depends с yield
4:32 - Параметры запроса в функциях
7:42 - Параметры запроса в классе
9:59 - Экземпляр класса, _call_ и request
14:40 - Резюме работы Depends
16:10 - Глобальные зависимости
20:04 - Как работает аутентификация
22:53 - Анонс нового курса
23:26 - Спасибо вам!
#fastapi #python #backend #django #flask #docker #sql #celery #разработка #программирование

Пікірлер: 53
@artemshumeiko
@artemshumeiko Жыл бұрын
💡 Попробуй онлайн-тренажёр для подготовки к техническому собеседованию: clck.ru/3B5gwP 💡 Забирай роадмап изучения самого востребованного фреймворка на Python - FastAPI здесь: t.me/ArtemShumeikoBot
@romanpodkorytov
@romanpodkorytov Жыл бұрын
Добрый день а есть программа курса?
@artemshumeiko
@artemshumeiko Жыл бұрын
Пока что она не до конца готова, но выглядит примерно так: 1. API и FastAPI. Что это такое? 2. Виртуальное окружение и запуск FastAPI 3. Параметры пути и запроса, валидация через Pydantic 4. Работа с Базой Данных и миграции (SQLAlchemy + Alembic) 5. Выделение работы с БД в отдельный слой через DAO 6. Кастомная аутентификация: знакомство с jwt, cookie, Depends 7. Подключение админки 8. Кэширование данных через redis 9. Фоновые задачи с Celery, Flower и Background Tasks 10. Фронтенд для API с помощью Jinja 11. CORS & Middleware 12. Логирование 13. Тестирование: юнит и интеграционное 14. Мониторинг данных через Grafana + Prometheus 15. Стилизация кода: pyright, autoflakes, flake8, black, isort 16. Написание докерфайла и докер-композ 17. Деплой приложения По сравнению с этим курсом, заметно улучшены или добавлены пункты 4,5,6,7,12,13,14,15
@AleksandrChernovIT
@AleksandrChernovIT 2 ай бұрын
@@artemshumeiko Привет! Актуальный вопрос про аутентификацию, подскажи пожалуйста, в курсе на степик, используем ли oauth?
@скриптослав
@скриптослав Жыл бұрын
Братан, харош! Давай-давай, вперед! Контент в кайф! Можно еще? Ваще красавчик! Можно вот этого вот почаще?
@artemshumeiko
@artemshumeiko Жыл бұрын
ждите контент по FastAPI в течение недели :)
@adilzhansarsen7307
@adilzhansarsen7307 Жыл бұрын
экстримкод момент
@Ratmirsh
@Ratmirsh 4 күн бұрын
Возможно лучшее объяснение Depends не только в русскоязычном ютубе, но и в англоязычном
@user-df8id2sx9k
@user-df8id2sx9k Жыл бұрын
Огромное спасибо за это видео! Все очень доходчиво. Молодец!!!!!
@alexeymatveev9031
@alexeymatveev9031 9 ай бұрын
Спасибо Вам большое, долго пытаюсь, уже почти месяц понять работу авторизации на fastapi и вот именно этого знания мне не хватало, чтобы пройти вперед.
@romanbush5164
@romanbush5164 Жыл бұрын
Супер полезный видос🙂
@RunBull
@RunBull Жыл бұрын
спасибо большое за ролики, нашёл работу благодаря ним
@artemshumeiko
@artemshumeiko Жыл бұрын
Круто! Рад помочь
@SeliverstovMusic
@SeliverstovMusic 8 ай бұрын
Увидел Depends в чужом коде. Оказалось удобно. Отличный разбор, спасибо =)
@adammason482
@adammason482 Жыл бұрын
Спасибо за урок!
@endlinkkk3951
@endlinkkk3951 3 күн бұрын
Оч хорошая подача, вот прям как надо, все по делу)
@borzxoYT
@borzxoYT 10 ай бұрын
Когда сказал родителям, что занимаешься программированием и они заходят в твою комнату чтобы проверить: 17:27
@maximkoltsov9833
@maximkoltsov9833 7 ай бұрын
Столкнулся с моментом, когда скопировал код блока базы данных с кучи разных примеров как мне надо, но так и не разобрался что как работает)) Не понимал конструкцию async_generator, потом заметил, что с ней работают через depends в эндпоинтах. Писал тестовый скрипт на выполнение в консоли без эндпоинта, теперь понял в чем ошибался 😅 Полезное видео, спа
@hovharoyan3262
@hovharoyan3262 3 ай бұрын
Огромное спасибо тебе Артем
@eugene_fed
@eugene_fed 10 ай бұрын
Чтобы не прыгать между двумя скриптами можно навести стрелку на вкладку скрипта (где имя файла указано) и нажать ПКМ, далее выбрать Split Right (или прожать Alt+H по-умолчанию). Ну и спокойно слева видеть свой код а справа - код библиотеки. Либо два куска одного и того же файла. И самому удобно, и демонстрировать тем более.
@zion4d
@zion4d 4 ай бұрын
VSCode держим Alt+Ctrl и жмакаем по объекту
@ahmadum
@ahmadum 3 ай бұрын
Благодарю
@user-bd9bf5kw3l
@user-bd9bf5kw3l Жыл бұрын
Очень хотелось услышать функтор))
@dimuha82
@dimuha82 11 ай бұрын
По авторизации это получается аналог permission_classes в DRF, если я правильно понял
@uuuummm9
@uuuummm9 9 ай бұрын
по-моему "раньше было лучше". Добавил @my_permission на endpoint, коротко и ясно. Тут почему-то именно в get надо пихать... декоратор на функцию ведь точно также себя ведёт, зачем этот Depends нужен-то?..
@1klassavgfan
@1klassavgfan 17 күн бұрын
Хаю хай АртёмГай !
@redvizer8337
@redvizer8337 Жыл бұрын
а почему проверку на куки делается через __call__ а не __init__ просто?
@Chel1k7
@Chel1k7 Жыл бұрын
это если в зависимость кидаешь экземпляр класса, а не класс, потому что Depends вызывает объект который ты подаешь ему, следовательно при вызове экземпляра класса вызывается метод __call__. Если кидаешь в Depends класс, то нужно в ините логику прописывать (или создавать отдельный метод, который вызывать в ините)
@user-ts6wk3mu2l
@user-ts6wk3mu2l Жыл бұрын
Сколько будет стоить курс?
@artemshumeiko
@artemshumeiko Жыл бұрын
Пока не определился
@artemshumeiko
@artemshumeiko Жыл бұрын
Открыл предзапись на платный курс для получения скидки: forms.gle/DmFs1azNRFurtHNf6
@JIJI-zv1qp
@JIJI-zv1qp Жыл бұрын
Логирование будет?
@JIJI-zv1qp
@JIJI-zv1qp Жыл бұрын
именно логирование в больших сервисах
@artemshumeiko
@artemshumeiko Жыл бұрын
Подумаю над предложением, спасибо!
@stassolovyov2297
@stassolovyov2297 8 ай бұрын
17:27. Зачем библиотеку обозвал так?))
@artemshumeiko
@artemshumeiko 8 ай бұрын
ахахахах)))
@zion4d
@zion4d 4 ай бұрын
в классе AuthGuard метод init не нужен
@haskelllisp5998
@haskelllisp5998 Жыл бұрын
давай ищо, ишо
@artemshumeiko
@artemshumeiko Жыл бұрын
на днях завезу контента
@dreammanor_ru
@dreammanor_ru Жыл бұрын
@@artemshumeiko ждём-с! )😁
@nurkenspashev
@nurkenspashev 7 ай бұрын
ахах, хайю-хай свами Артем гей)))
@artemshumeiko
@artemshumeiko 7 ай бұрын
ban in 1..2..3)))
@andrewzh4660
@andrewzh4660 Жыл бұрын
Видео класс. Про формат Алхимии и json столкнулся еще на 4 уроке. Не лучше ли сразу в database не импортировать класс Base, а создать его? from sqlalchemy.orm import sessionmaker, as_declarative @as_declarative() class Base: def _asdict(self): return {c.key: getattr(self, c.key) for c in inspect(self).mapper.column_attrs}
@user-in1om1lx3f
@user-in1om1lx3f Жыл бұрын
Благодарю за Ваш труд.Не могли бы Вы подсказать, почему у меня выдает 500 ошибку, если использую ваш код: @router.get("/") async def get_specific_operations(operation_type: str, session: AsyncSession = Depends(get_async_session)): query = select(operation).where(operation.c.type == operation_type) result = await session.execute(query) return result.all() ValueError: [TypeError('cannot convert dictionary update sequence element #0 to a sequence'), TypeError('vars() argument must have __dict__ attribute')] Если же return result.scalars().all() , то все хорошо.
@artemshumeiko
@artemshumeiko Жыл бұрын
Такая ошибка появляется, потому что FastAPI не может перевести ответ алхимии в json формат. Нужно либо руками каждый раз переводить, либо что-то подобное юзать: stackoverflow.com/a/11884806/18406890 Также рекомендую зайти в телеграм сообщество: t.me/python_community_rus Там я и другие люди смогут вам помочь по этому и другим вопросам
@user-in1om1lx3f
@user-in1om1lx3f Жыл бұрын
@@artemshumeiko Благодарю за ответ.
@IgorVin1988
@IgorVin1988 Жыл бұрын
@@artemshumeiko А почему у тебя работает? Это может быть из-за разницы в версиях?
@paul12721
@paul12721 Жыл бұрын
return [dict(r._mapping) for r in result] вот так можно получить json
@umni_kot
@umni_kot Жыл бұрын
@@paul12721 спс, помог. Я правильно понимаю что если мы используем запросы через orm а не db.query то просто передать на выход данные в json мы не сможем ? только так? Просто ранее работал с моделями как классами и если запрос был через query то в ответе ничего дополнительного писать не нужно было, сам переводился в json. или тут суть в чем то другом ?
FastAPI - Docker и Docker Compose #15
31:04
Артём Шумейко
Рет қаралды 22 М.
100❤️
00:19
MY💝No War🤝
Рет қаралды 23 МЛН
Alex hid in the closet #shorts
00:14
Mihdens
Рет қаралды 10 МЛН
Alembic - Как делать Миграции Базы Данных на Python #13
14:58
Голосовые комментарии в коде
0:50
Артём Шумейко
Рет қаралды 15 М.