如何使用 FastAPI 返回 HTMLResponse

Posted

技术标签:

【中文标题】如何使用 FastAPI 返回 HTMLResponse【英文标题】:How to return a HTMLResponse with FastAPI 【发布时间】:2021-03-25 12:58:08 【问题描述】:

是否可以在端点显示 html 文件?

例如主页然后用户正在访问"/"

【问题讨论】:

【参考方案1】:

是的,FastAPI 可能有HTMLResponse

您可以返回HTMLResponse

from fastapi import FastAPI
from fastapi.responses import HTMLResponse

app = FastAPI()

@app.get("/", response_class=HTMLResponse)
async def read_items():
    html_content = """
    <html>
        <head>
            <title>Some HTML in here</title>
        </head>
        <body>
            <h1>Look ma! HTML!</h1>
        </body>
    </html>
    """
    return HTMLResponse(content=html_content, status_code=200)

你也可以使用Jinja2渲染模板

from fastapi import FastAPI, Request
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("/items/id", response_class=HTMLResponse)
async def read_item(request: Request, id: str):
    return templates.TemplateResponse("item.html", "request": request, "id": id

【讨论】:

以上是关于如何使用 FastAPI 返回 HTMLResponse的主要内容,如果未能解决你的问题,请参考以下文章

您将如何使用带有 FastAPI 的 asyncpg 将选择查询的返回值映射到 pydantic 模型以进行输出和验证?

FastAPI 依赖项(yield):如何手动调用它们?

FastAPI,返回带有 sql 查询输出的 File 响应

python fastapi 返回echart

如何从fastapi中的另一个api调用一个api?

服务器总是在慢速请求中返回 503(服务不可用)(FastAPI + Vue)