개발하자
FastAPI가 정적 파일을 로드하지 않음
Cuire
2023. 1. 12. 21:36
반응형
FastAPI가 정적 파일을 로드하지 않음
그래서 나는 내 프로젝트를 node.js에서 python FastAPI로 바꾸고 있다. 노드에서 모든 것이 정상적으로 작동하고 있지만 정적 파일이 없다고 표시되므로 다음 코드가 있습니다:
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
기본적으로, 제가 사용하는 정적 파일이 누락되어 있고, 제가 무엇을 잘못하고 있는지 전혀 모르겠습니다. 어떻게 고칠까요?
여기:
app.mount("/static", StaticFiles(directory="../static"), name="static")
경로 아래에 정적 디렉토리를 마운트합니다. 즉, HTML의 정적 파일에 액세스하려면 접두사를 사용해야 합니다.
HTML(Jinja2) 템플릿 내에서 정적 파일에 연결하려면 에 설명된 대로 다음 예제 코드를 사용할 수 있습니다:
<link href="{{ url_for('static', path='/css/rajdhani.css') }}" rel="stylesheet">
또는 StaticFiles() 인스턴스를 마운트할 때 지정된 이름을 사용할 수 있습니다(이 경우 "static"). 아래 예:
<link href="static/css/rajdhani.css'" rel="stylesheet">
folder = os.path.dirname(__file__)
app.mount("/static", StaticFiles(directory=folder+"/../static",html=True), name="static")
사용할 수 있습니다. 어떻게든 사용할 수 없습니다. Fast 외부를 가리킬 때 전체 경로가 필요합니다API 프로젝트. html 파일을 올바르게 제공하기 위해서도 필요합니다. 봐.
반응형