FastAPI返回HTML

FastAPI是一个用于构建API的现代、快速(高性能)的Web框架,基于Python 3.7+类型提示,它的主要目标是提供一种简单、直观的方式来定义和实现API,同时保持高性能,在FastAPI中,我们可以使用HTML模板来返回动态生成的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文件中:




    
    
    FastAPI HTML Example


    

{{ message }}

在这个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页面。

新闻名称:FastAPI返回HTML
网址分享:http://www.shufengxianlan.com/qtweb/news41/477091.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联