gpt4 book ai didi

fastapi - 加载 index.html 的最小 fastapi 示例

转载 作者:行者123 更新时间:2023-12-04 16:38:18 66 4
gpt4 key购买 nike

在我的项目文件夹中,我有一个基本的 index.html文件加上静态文件(js、css)以及我的 main.py :

from fastapi.staticfiles import StaticFiles
from fastapi.templating import Jinja2Templates
from fastapi import Request

app = FastAPI()

templates = Jinja2Templates(directory="/")
app.mount("/", StaticFiles(directory="/"))

@app.get("/")
def serve_home(request: Request):
return templates.TemplateResponse("index.html", context= {"request": request})
我怎样才能让 fastapi 在这里工作?我只想要我的 index.html和在本地主机上提供的静态文件。
没有 static 有问题吗?或 templates文件夹?

最佳答案

选项 1:静态文件挂载
这比预期的要容易。只需要放包括index.html在内的所有静态文件进入 static项目目录中的文件夹并挂载静态文件。

from fastapi import FastAPI
from fastapi.staticfiles import StaticFiles

app = FastAPI()

app.mount("/static", StaticFiles(directory="static"), name="static")
就是这样。我的 index.html现在可在 http://localhost:8000/static/index.html 下使用.
如果它应该可以在 http://localhost:8000/ 下访问没有 /static.html结束一件事需要改变两件事。首先它需要安装在 /上而不是 /static并且 HTML 标志必须设置为 true安装时。所以只需使用这一行: app.mount("/", StaticFiles(directory="static",html = True), name="static")(感谢 this answer) index.html现在可在 http://localhost:8000/ 下使用

选项 2:仅提供服务 index.html由于fastapi基于starlette,一个简单的 FileResponse 做这项工作。
from starlette.responses import FileResponse 

@app.get("/")
async def read_index():
return FileResponse('index.html')
找到 here .

关于fastapi - 加载 index.html 的最小 fastapi 示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65916537/

66 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com