Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

1.5K
Visualizações
Cómo servir archivos estáticos en FastAPI

Estoy tratando de servir archivos estáticos que tengo en un directorio package_docs. Cuando abro en el navegador:

http://127.0.0.1:8001/packages/docs/index.html , la página se está ejecutando.

Pero quiero abrir la página: http://127.0.0.1:8001/packages/docs/

sin el archivo fuente. Y la salida es 404 Not Found

 app.mount("/packages/docs", StaticFiles(directory=pkg_resources.resource_filename(__name__, 'package_docs') ), name="package_docs") @app.get("/packages/docs/.*", include_in_schema=False) def root(): return HTMLResponse(pkg_resources.resource_string(__name__, "package_docs/index.html")) app.include_router(static.router) app.include_router(jamcam.router, prefix="/api/v1/cams", tags=["jamcam"])

¿Cómo puedo cambiar mi código? Cualquier consejo será útil. Gracias de antemano.

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Hay una opción html en Starlette que se puede usar dentro de FastAPI. Documentación Starlette

Esto te permitiría tener algo como:

 app.mount("/site", StaticFiles(directory="site", html = True), name="site")

Que analizaría /site a /site/index.html, /site/foo/ a /site/foo/index.html, etc.

Las otras respuestas pueden ayudarlo a redirigir si desea cambiar los nombres de las carpetas de una manera que no se maneja usando "directory = /foo", pero esta es la opción más simple si simplemente desea cargar los archivos .html asociados.

over 4 years ago · Santiago Trujillo Relatório

0

Debe usar TemplateResponse de FastAPI (en realidad, Starlette):

 from fastapi import Request from fastapi.staticfiles import StaticFiles from fastapi.templating import Jinja2Templates app.mount("/static", StaticFiles(directory="static"), name="static") templates = Jinja2Templates(directory="package_docs") @app.get("/items/{id}") async def example(request: Request): return templates.TemplateResponse("index.html", {"request": request})

Request como parte de los pares clave-valor en el contexto de Jinja2. Por lo tanto, también debe declararlo como parámetro de consulta. y debe especificar un archivo html que desea procesar con Jinja ("your.html", {"request": request})

También para devolver una HTMLResponse directamente, puede usar HTMLResponse de fastapi.responses

 from fastapi.responses import HTMLResponse @app.get("/items/", response_class=HTMLResponse) async def read_items(): return """ <html> <head> <title></title> </head> <body> </body> </html> """

Puede leer más sobre la respuesta personalizada de Respuestas personalizadas de FastAPI

over 4 years ago · Santiago Trujillo Relatório

0

de los documentos

El primer "/static" se refiere a la subruta en la que se "montará" esta "subaplicación". Por lo tanto, cualquier ruta que comience con "/static" será manejada por él.

Esto significa que monta su directorio en http://127.0.0.1:8001/packages/docs/ , pero luego debe especificar un archivo en la URL o agregar un controlador como lo hizo. Sin embargo, el problema es que, dado que montó la ruta primero, no tendrá en cuenta las siguientes rutas que incluyen parte de la ruta.

Una posibilidad es especificar primero la ruta para http://127.0.0.1:8001/packages/docs/ para que sea manejado por fastapi y luego montar la carpeta, sirviendo archivos estáticos.

Además, redirigiría a los usuarios que soliciten http://127.0.0.1:8001/packages/docs/ a http://127.0.0.1:8001/packages/docs/index.html

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda