Entonces, estoy cambiando mi proyecto de node.js a python FastAPI. Todo ha estado funcionando bien con el nodo, pero aquí dice que mis archivos estáticos no están presentes, así que aquí está el código:
from fastapi import FastAPI, Request, WebSocket from fastapi.responses import HTMLResponse from fastapi.staticfiles import StaticFiles from fastapi.templating import Jinja2Templates app = FastAPI() app.mount("/static", StaticFiles(directory="../static"), name="static") templates = Jinja2Templates(directory='../templates') @app.get('/') async def index_loader(request: Request): return templates.TemplateResponse('index.html', {"request": request}) La estructura del proyecto se ve así:

Los archivos claramente están donde deberían estar, pero cuando me conecto al sitio web aparece el siguiente error:
←[32mINFO←[0m: connection closed ←[32mINFO←[0m: 127.0.0.1:54295 - "←[1mGET /img/separator.png HTTP/1.1←[0m" ←[31m404 Not Found←[0m ←[32mINFO←[0m: 127.0.0.1:54296 - "←[1mGET /css/rajdhani.css HTTP/1.1←[0m" ←[31m404 Not Found←[0m ←[32mINFO←[0m: 127.0.0.1:54295 - "←[1mGET /js/pixi.min.js HTTP/1.1←[0m" ←[31m404 Not Found←[0m ←[32mINFO←[0m: 127.0.0.1:54296 - "←[1mGET /js/ease.js HTTP/1.1←[0m" ←[31m404 Not Found←[0m ←[32mINFO←[0m: 127.0.0.1:54298 - "←[1mGET / HTTP/1.1←[0m" ←[32m200 OK←[0m ←[32mINFO←[0m: 127.0.0.1:54298 - "←[1mGET /img/separator.png HTTP/1.1←[0m" ←[31m404 Not Found←[0m ←[32mINFO←[0m: 127.0.0.1:54299 - "←[1mGET /css/rajdhani.css HTTP/1.1←[0m" ←[31m404 Not Found←[0m ←[32mINFO←[0m: 127.0.0.1:54298 - "←[1mGET /js/pixi.min.js HTTP/1.1←[0m" ←[31m404 Not Found←[0m ←[32mINFO←[0m: 127.0.0.1:54299 - "←[1mGET /js/ease.js HTTP/1.1←[0m" ←[31m404 Not Found←[0mEntonces, básicamente, falta cualquier archivo estático que estoy usando, y no tengo idea de qué estoy haciendo mal. ¿Como arreglarlo?
Aquí:
app.mount("/static", StaticFiles(directory="../static"), name="static") Montas tu directorio estático en /static . Eso significa que si desea acceder a archivos estáticos en su html, debe usar un prefijo static , por ejemplo, <img src="static/img/separator.png"/>
Para vincular archivos estáticos desde su plantilla HTML (Jinja2), puede usar el siguiente código de ejemplo, como se describe en la documentación de Starlette :
<link href="{{ url_for('static', path='/css/rajdhani.css') }}" rel="stylesheet">Alternativamente, puede usar el nombre dado cuando monta una instancia de StaticFiles() (en este caso, "estático"). Cualquier ruta que comience con "/static" será manejada por él . Ejemplo a continuación:
<link href="static/css/rajdhani.css'" rel="stylesheet">