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)
directoryEen string of os. PathLike die het directorypad vertegenwoordigt.packagesEen lijst met strings of string-tuples voor een Python-pakket.html- Draait in HTML-modus. Als een dergelijk bestand bestaat, wordtindex.htmlautomatisch geladen voor de map.check_dir- Zorg ervoor dat de map bestaat wanneer deze is geïnstantieerd. Standaard isTrue.follow_symlink- Een booleaanse waarde die aangeeft of symbolische links naar bestanden en mappen moeten worden gevolgd. Standaard isFalse.
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.