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
文件中:
<!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
模板并传递两个变量:request
和message
。
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页面。
最新评论
本站CDN与莫名CDN同款、亚太CDN、速度还不错,值得推荐。
感谢推荐我们公司产品、有什么活动会第一时间公布!
我在用这类站群服务器、还可以. 用很多年了。