Перейти к содержанию

Статические файлы

Starlette также включает в себя класс StaticFiles, который используется для предоставления файловых сервисов в данном каталоге:

Статические файлы

Подпись: StaticFiles(directory=None, packages=None, html=False, check_dir=True, follow_symlink=False)

  • directory - Строка, обозначающая путь к каталогу, или os.PathLike.
  • packages - Список строк пакета Python или список кортежей строк.
  • html-работает в режиме HTML. Если такие файлы существуют,index.html будет загружаться автоматически для каталога.
  • check_dir-убедитесь, что каталог существует во время создания экземпляра. По умолчанию используется True.
  • follow_symlink-логическое значение, указывающее, следует ли следовать символьным ссылкам файлов и каталогов. По умолчанию используется False.

Вы можете объединить это приложение ASGI с маршрутизацией Starlette для предоставления полного спектра статических файловых услуг.

from Starlette.applications import Starlette
От Starlet.routing import Mount
from starlette.staticfiles import StaticFiles


routes = [
    ...
    Mount ('/static', app=StaticFiles(directory ='static'), name="static"),
]

app = Starlette(routes=routes)

Для несовпадающих запросов статический файл будет отвечать как «404 не найдено » или «405 метод не разрешен». В HTML-режиме, если файл 404.html существует, он будет отображаться как ответ 404.

packages Опция может быть использована для включения «статических» каталогов внутри пакета Python. Пакет Python «bootstrap 4» является одним из таких примеров.

Из Starlette.applications Import Starlette
От Starlet.routing import Mount
from starlette staticfiles import StaticFiles


routes=[
    ...
    Mount ('/static', app=StaticFiles(directory ='static', packages=['bootstrap4']), name="static"),
]

app = Starlette(routes=routes)

По умолчанию StaticFiles ищет каталог statics в каждом пакете, и вы можете изменить каталог по умолчанию, указав кортеж строки.

routes=]
    ...
    Mount ('/static', app=StaticFiles(packages=[('bootstrap4', 'static')]), name="static"),
]

Возможно, вы предпочитаете включать статические файлы непосредственно в каталог «static», а не использовать Python для включения статических файлов, но это может быть полезно для объединения мультиплексных компонентов.