簡體   English   中英

FastAPI 未加載 static 個文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM