Ga naar inhoud

Statische bestanden

Starlette bevat ook een StaticFiles-klasse voor het leveren van bestandsservices in een bepaalde map:

statisch bestand

Handtekening: StaticFiles(directory=None, packages=None, html=False, check_dir=True, follow_symlink=False)

  • directory Een string of os. PathLike die het directorypad vertegenwoordigt.
  • packages Een lijst met strings of string-tuples voor een Python-pakket.
  • html- Draait in HTML-modus. Als een dergelijk bestand bestaat, wordt index.html automatisch geladen voor de map.
  • check_dir- Zorg ervoor dat de map bestaat wanneer deze is geïnstantieerd. Standaard is True.
  • follow_symlink- Een booleaanse waarde die aangeeft of symbolische links naar bestanden en mappen moeten worden gevolgd. Standaard is False.

U kunt deze ASGI-applicatie combineren met de routing van Starlette om uitgebreide statische bestandsservices te bieden.

Starlette.applicaties importeren vanuit Starlette
Van starlette. routing importeren Mount
Importeer StaticFiles vanuit starlette.staticfiles


Routes = [
    ...
    Mount ('/ static', app = StaticFiles (directory = 'static'), naam = "static"),
]

App = Starlette (routes = routes)

Voor niet-overeenkomende verzoeken zal een statisch bestand reageren met "404 niet gevonden" of "405-methode niet toegestaan". Als het 404.html-bestand in HTML-modus bestaat, wordt het weergegeven als een 404-antwoord.

packages Opties kunnen worden gebruikt om "statische" mappen in Python-pakketten op te nemen. Python 's "bootstrap4" -pakket is zo 'n voorbeeld.

Starlette.applicaties importeren vanuit Starlette
Van starlette. routing importeren Mount
Importeer StaticFiles vanuit starlette.staticfiles


Routes = [
    ...
    Mount ('/ static', app = StaticFiles (directory = 'static', pakketten = ['bootstrap4']), naam = "static"),
]

App = Starlette (routes = routes)

Standaard zoekt StaticFiles naar de statics-map in elk pakket en u kunt de standaardmap wijzigen door een string-tuple op te geven.

Routes = [
    ...
    Mount ('/ static', app = StaticFiles (pakketten = [('bootstrap4', 'static')]), naam = "static"),
]

Misschien geeft u er de voorkeur aan om statische bestanden rechtstreeks in de "statische" map op te nemen in plaats van Python-verpakkingen te gebruiken om statische bestanden op te nemen, maar dit kan handig zijn voor het bundelen van herbruikbare componenten.