РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
258 of 307 menu

Метод __call__

Метод __call__ применяется к экземпляру класса StaticFiles и превращает его в ASGI-приложение. Именно благодаря этому методу объект StaticFiles можно передать в app.mount в качестве обработчика. Первым параметром метод принимает ASGI-словарь scope с информацией о запросе, вторым - функцию receive для получения тела запроса, третьим - функцию send для отправки ответа клиенту. Внутри метод определяет запрошенный путь, находит файл в директории и отдаёт его с корректным MIME-типом.

Синтаксис

async def __call__(self, scope, receive, send)

Пример

Давайте создадим приложение и подключим раздачу статики из директории static:

from fastapi import FastAPI from fastapi.staticfiles import StaticFiles app = FastAPI() app.mount('/static', StaticFiles(directory='static'), name='static')

При запросе к адресу /static/logo.png FastAPI вызовет метод __call__ у экземпляра StaticFiles, который найдёт файл static/logo.png и отдаст его клиенту с заголовком Content-Type: image/png.

Пример

Давайте вручную вызовем экземпляр StaticFiles как ASGI-приложение и посмотрим, что метод принимает три аргумента:

<+python+> from fastapi.staticfiles import StaticFiles static = StaticFiles(directory='static') async def app(scope, receive, send): await static(scope, receive, send) <-python+>

В этом примере объект static вызывается как функция благодаря методу __call__. Параметр scope описывает запрос, receive читает тело запроса, а send отправляет ответ.

Пример

Давайте проверим, что метод __call__ действительно делает экземпляр вызываемым:

<+python+> from fastapi.staticfiles import StaticFiles static = StaticFiles(directory='static') print(callable(static)) <-python+>

Результат выполнения кода:

<+python+> True <-python+>

Смотрите также

  • класс StaticFiles,
    который раздаёт статические файлы
  • атрибут directory,
    который задаёт директорию со статикой
  • атрибут html,
    который включает режим HTML
  • атрибут check_dir,
    который проверяет существование директории
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить