fastapi 返回html
时间: 2024-08-12 17:02:21 浏览: 107
在FastAPI中,返回HTML通常是通过渲染模板并将其转换为字符串来实现的。FastAPI本身并不直接提供HTML渲染功能,因为它专注于RESTful API的创建。不过,你可以结合第三方模板引擎如Jinja2(常用于Flask中),或者使用像Uvicorn + Starlette + HTML templates这样的组合来处理前端展示。
以下是一个简单的例子,展示了如何使用Starlette和Jinja2返回HTML:
首先安装依赖:
```bash
pip install starlette jinja2 uvicorn
```
然后创建一个基本的HTML模板(比如templates/index.html):
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>FastAPI 示例</title>
</head>
<body>
<h1>Welcome to my FastAPI app!</h1>
</body>
</html>
```
然后在FastAPI应用中设置模板路径:
```python
from starlette.applications import Starlette
from starlette.responses import HTMLResponse
from starlette.templating import Jinja2Templates
templates = Jinja2Templates(directory='templates')
async def homepage(request):
context = {"message": "Hello, World!"} # 这里可以放入动态数据
return HTMLResponse(content=templates.Template("index.html"), context=context)
app = Starlette()
app.mount('/templates', StaticFiles(directory='templates'), name='templates')
app.add_route('/', homepage)
```
当你访问`http://localhost:8000/`时,就会看到渲染后的HTML页面。
阅读全文