[英]FastAPI not loading static files
所以,我將我的項目從 node.js 換成 python FastAPI。 節點一切正常,但這里說我的 static 文件不存在,所以這里是代碼:
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})
文件顯然在它們應該在的位置,但是當我連接到網站時出現以下錯誤:
←[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←[0m
所以,基本上,我正在使用的任何 static 文件都丟失了,而且我不知道我做錯了什么。 如何解決?
這里:
app.mount("/static", StaticFiles(directory="../static"), name="static")
您將 static 目錄安裝在/static
路徑下。 這意味着,如果您想訪問 html 中的 static 文件,您需要使用static
前綴,例如<img src="static/img/separator.png"/>
要從 HTML (Jinja2) 模板中鏈接到 static 文件,您可以使用以下示例代碼,如Starlette 文檔中所述:
<link href="{{ url_for('static', path='/css/rajdhani.css') }}" rel="stylesheet">
folder = os.path.dirname(__file__)
app.mount("/static", StaticFiles(directory=folder+"/../static",html=True), name="static")
作品。 以某種方式使用directory="../static"
不起作用,指向 FastAPI 項目外部時需要完整路徑。 然后還需要html=True
才能正確提供 html 個文件。 請參閱https://www.starlette.io/staticfiles/ 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.