FastAPI返回HTML

FastAPI是一个用于构建API的现代、快速(高性能)的Web框架,基于Python 3.7+类型提示,它的主要目标是提供一种简单、直观的方式来定义和实现API,同时保持高性能,在FastAPI中,我们可以使用HTML模板来返回动态生成的HTML页面,本文将详细介绍如何在FastAPI中返回HTML。

FastAPI返回HTML
(图片来源网络,侵删)

1、安装FastAPI和Uvicorn

我们需要安装FastAPI和Uvicorn,Uvicorn是一个ASGI服务器,用于运行FastAPI应用,在命令行中运行以下命令来安装这两个库:

pip install fastapi
pip install uvicorn

2、创建一个简单的FastAPI应用

接下来,我们创建一个简单的FastAPI应用,在项目目录下创建一个名为main.py的文件,并添加以下代码:

from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
    return {"Hello": "World"}

在这个例子中,我们创建了一个FastAPI实例,并定义了一个根路由(/),该路由返回一个包含"Hello"和"World"键值对的字典。

3、创建HTML模板

要返回HTML,我们需要创建一个HTML模板,在项目目录下创建一个名为templates的文件夹,并在其中创建一个名为index.html的文件,将以下HTML代码添加到index.html文件中:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF8">
    <meta name="viewport" content="width=devicewidth, initialscale=1.0">
    <title>FastAPI HTML Example</title>
</head>
<body>
    <h1>{{ message }}</h1>
</body>
</html>

在这个HTML模板中,我们使用双花括号({{ }})来表示变量,我们将在FastAPI应用中使用这些变量来动态生成HTML内容。

4、修改FastAPI应用以返回HTML模板

现在我们需要修改FastAPI应用,以便在根路由上返回HTML模板,在main.py文件中,将read_root函数修改为以下代码:

from fastapi import FastAPI, Request
from fastapi.responses import HTMLResponse
from fastapi.templating import Jinja2Templates
import os
app = FastAPI()
templates = Jinja2Templates(directory="templates")
@app.get("/")
async def read_root(request: Request):
    message = "Hello from FastAPI!"
    return templates.TemplateResponse("index.html", {"request": request, "message": message})

在这个修改后的代码中,我们导入了Request类、HTMLResponse类和Jinja2Templates类,我们还导入了os库,以便获取项目目录,我们创建了一个Jinja2Templates实例,并将模板目录设置为templates文件夹,我们修改了read_root函数,使其返回一个HTMLResponse对象,该对象使用index.html模板并传递两个变量:requestmessage

5、运行FastAPI应用

现在我们可以运行FastAPI应用了,在命令行中,导航到项目目录并运行以下命令:

uvicorn main:app reload

这将启动一个开发服务器,监听在默认端口(8000),在浏览器中访问http://127.0.0.1:8000/,你应该能看到动态生成的HTML页面,其中包含"Hello from FastAPI!"消息。

归纳一下,我们在FastAPI应用中创建了一个简单的根路由,该路由返回一个包含"Hello"和"World"键值对的字典,我们创建了一个HTML模板,并在FastAPI应用中使用这个模板来动态生成HTML内容,通过这种方式,我们可以在FastAPI应用中轻松地返回HTML页面。

原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/475748.html

(0)
未希新媒体运营
上一篇 2024-04-15 01:11
下一篇 2024-04-15 01:12

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购  >>点击进入