FastAPI - 应用Jinja2模板的简单案例

ops/2024/9/24 2:47:44/

在 FastAPI 中使用 Jinja2 模板,需要安装 aiofilesjinja2 Python 包。

pip install aiofiles jinja2

以下是一个使用 FastAPI 和 Jinja2 模板的基本示例:

首先,创建一个 Jinja2 模板文件 templates/item.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Item Details</title>
</head>
<body><h1>Item Details</h1><p>ID: {{ item.id }}</p><p>Name: {{ item.name }}</p><p>Description: {{ item.description }}</p><p>Price: {{ item.price }}</p>
</body>
</html>

然后,创建一个 FastAPI 应用:

python">from fastapi import FastAPI, Request
from fastapi.responses import HTMLResponse
from fastapi.templating import Jinja2Templatesapp = FastAPI()# 设置模板目录
templates = Jinja2Templates(directory="templates")@app.get("/items/{item_id}", response_class=HTMLResponse)
async def read_item(request: Request, item_id: str):# 这里应该是从数据库或其他数据源获取数据的逻辑item = {"id": item_id,"name": "Sample Item","description": "This is a sample item","price": 42.00}return templates.TemplateResponse("item.html", {"request": request, "item": item})

在这个例子中,首先导入 FastAPIRequestHTMLResponseJinja2Templates。然后,创建一个 FastAPI 应用实例 app

使用 Jinja2Templates 来指定模板文件的目录,这里是 templates 文件夹。然后,定义路由 /items/{item_id},接受一个 item_id 参数,并返回一个 HTML 响应。

在路由处理函数中,创建 item 字典,字典包含了一些商品的信息。然后,使用 templates.TemplateResponse 来渲染 item.html 模板,并传递了 requestitem 这两个变量。

最后,运行 FastAPI 应用:

python">if __name__ == "__main__":import uvicornuvicorn.run(app, host="0.0.0.0", port=8000)

当访问 http://127.0.0.1:8000/items/123 时,将看到渲染后的 item.html 模板,其中包含了 item 字典中的数据。


http://www.ppmy.cn/ops/35638.html

相关文章

Java多线程优化接口响应

同步查询 Override public MallOrder getById1(Long id) {long startTime System.currentTimeMillis();MallOrder mallOrder new MallOrder();mallOrder.setId(1L);mallOrder.setShopId(3L);mallOrder.setCustomerId(78L);mallOrder.setGoodsId(664L);mallOrder.setOrderTime…

Kubernetes的labels解析

目录 1、基本概念2、核心特性3、使用场景4、最佳实践5、使用示例 在 Kubernetes 中&#xff0c;labels 是一种强大的元数据标注机制&#xff0c;用于标记 Kubernetes 对象&#xff0c;如 Pods、Services、Deployments 等。它们是键值对&#xff08;key-value pairs&#xff09;…

《鸿蒙发展历程记录》

鸿蒙&#xff0c;作为华为公司倾力打造的操作系统&#xff0c;它的发展历程堪称一部科技传奇。 鸿蒙的起源可以追溯到多年以前&#xff0c;当时华为就已经意识到自主操作系统的重要性&#xff0c;开始了前瞻性的规划和布局。 在发展过程中&#xff0c;鸿蒙经历了不断的迭代和完…

腾讯会议崩溃解决

突然腾讯会议就罢工了&#xff0c;腾讯会议的主界面可以登陆上去&#xff0c;不会异常退出&#xff1a; 这时无论是通过别人提供的会议号“加入会议” 还是 “快速会议”&#xff0c;都会出现下面的异常&#xff0c;并崩溃退出&#xff1a; 在网上搜“SteinwayMSVCRT”导致的腾…

C语言三维数组的创建

#include <stdio.h> int main() { int n 5; // 假设我们想要一个 5x5x5 的三维数组 // 但这样声明是不允许的&#xff0c;因为 n 的值在编译时未知 // int f[n][n][n]; // 错误 // 如果 n 是一个编译时常量&#xff08;例如枚举值或 const 变量&#xff09;&#x…

Linux安装Python3.9环境

大家好&#xff0c;今天给大家分享一下在Linux系统中安装Python3环境&#xff0c;Linux系统中自带的Python2尽量不要删除&#xff0c;删除后可能会导致系统出现问题。 关于Linux常用命令&#xff0c;可以参考&#xff1a;作为测试人员的Linux常用命令 一、下载Python3安装包 …

在Excel中使用正则提取单元格内容

在办公自动化的浪潮中&#xff0c;Excel 作为数据处理的利器&#xff0c;一直在不断进化。最近&#xff0c;我注意到了不坑盒子Office插件一个非常实用的功能更新——bk_regex_string 公式。这个功能对于我们这些日常需要处理大量文本和数据的办公人员来说&#xff0c;无疑是一…

Activating More Pixels in Image Super-Resolution Transformer

cvpr2023https://github.com/XPixelGroup/HAT?tabreadme-ov-file问题引入&#xff1a; – 现在的transformer based的SR模型“感受野”不够&#xff1b; – 分析&#xff1a;原本认为transformer-based的方法优于CNN-based的方法是因为可以利用更加long-range的信息&#xff0…