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

在 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 应用:

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 应用:

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.mzph.cn/bicheng/7022.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入探索Android Retrofit:概述、工作原理、实践应用与评估

摘要 随着移动互联网的飞速发展&#xff0c;高效且可靠的网络通信成为现代Android应用开发的关键要素。Retrofit作为一款广受欢迎的REST客户端库&#xff0c;以其高度灵活性、类型安全特性和简洁的API设计&#xff0c;在Android开发社区内赢得了极高的声誉。本文旨在全面剖析Re…

C#知识|如何在WinForm窗体中实现分割线绘制?

哈喽&#xff0c;你好啊&#xff0c;我是雷工&#xff01; 在上位机UI设计中经常会用到分割线&#xff0c;用来分割界面区域。 像在KingSCADA、杰控、昆仑通态、WinCC、组态王、力控、易控等组态软件中非常简单&#xff0c;有现成的划线操作&#xff0c;选中相关工具直接绘制即…

颠覆传统?「一束光子,两种频率」的量子纠缠!

在最新的研究中&#xff0c;科学家们开发了一种革命性的量子纠缠方式——“频域光子数路纠缠”&#xff08;frequency-domain photon number-path entanglement&#xff09;。这一量子物理学的重大进展涉及到一个创新性的工具&#xff1a;频率分束器&#xff08;frequency beam…

Rust : 声明宏在不同K线bar类型中的应用

Rust的宏功能博大精深。在K线bar中&#xff0c;往往有很多不同分时k线图&#xff0c;比如1&#xff0c;2&#xff0c;3&#xff0c;5&#xff0c;。。。。60&#xff0c;120&#xff0c;250&#xff0c;300…。。不同分钟类型。 如果不用宏&#xff0c;那么手写会比较麻烦。下面…

jmeter后置处理器提取到的参数因为换行符导致json解析错误

现象&#xff1a; {"message":"JSON parse error: Illegal unquoted character ((CTRL-CHAR, code 10)): has to be escaped using backslash to be included in string value; nested exception is com.fasterxml.jackson.databind.JsonMappingException: Ill…

开源之夏 2024 学生报名通道现已正式开启!奖金都是12000元,冲啊!!!

Apache SeaTunnel作为数据集成平台的先行者&#xff0c;数以千计的开发者活跃在这个开源社区&#xff0c;我们深知开源社区就像是“众人拾柴火焰高”&#xff0c;希望有更多的青年力量能参与到社区的建设中来&#xff01; 在前段时间&#xff0c;我们不仅成功入选中科院软件所主…

[C++]VS2022配置cplex12.8过程中出现ext未声明标识符语法错误:标识符“ImplClass“

这个时候&#xff0c;主要的是看报错&#xff0c;根据报错&#xff0c;去网上寻找解决办法。因为这个时候&#xff0c;代码可能并没有任何错误&#xff0c;只不过你是VS2022&#xff0c;老师是VS2017或者其他版本。不同的版本之间代码运行问题&#xff0c;如果你换成cplex12.10…

【前端】输入时字符跳动动画实现

输入时字符跳动动画实现 在前端开发中&#xff0c;为了提升用户体验&#xff0c;我们经常需要为用户的交互行为提供即时的反馈。这不仅让用户知道他们的操作有了响应&#xff0c;还可以让整个界面看起来更加生动、有趣。本文将通过一个简单的例子讲解如何实现在用户输入字符时…

IoTDB 入门教程 基础篇④——数据库用户管理和用户权限管理

文章目录 一、前文二、修改ROOT密码三、用户登录四、查看用户列表五、创建用户六、删除用户七、修改用户八、查看指定用户的权限范围九、添加指定用户的权限范围十、删除指定用户的权限范围十一、参考 一、前文 IoTDB入门教程——导读 本文主要讲述数据库用户管理和用户权限管理…

速卖通自养号测评海外环境:成本、步骤、技巧全掌握

相信不少涉足跨境业务的企业和商家都对速卖通耳熟能详。作为当下炙手可热的跨境电商平台&#xff0c;速卖通在国内电商市场渐趋饱和的背景下&#xff0c;吸引了众多国内卖家的目光。他们纷纷入驻速卖通&#xff0c;希望借助这一平台的力量&#xff0c;成功打通跨境业务渠道。然…

vue3 原理【详解】Proxy 实现响应式

为了解决 vue2 的响应式缺陷 &#xff0c;vue3 改用 Proxy 实现响应式 使用 Proxy 实现响应式 详见代码注释 // 仿写vue3的reactive -- 声明响应式对象 function reactive(target {}) {// 若目标数据不是对象/数组,则直接返回 &#xff08;reactive 的参数必须为对象/数组才…

重新下载 ant design pronp

一、项目重建 要删除前端代码并 重新下载Ant Design Pro&#xff0c;您可以按照以下步骤操作&#xff1a; 删除项目文件夹&#xff1a;找到您的Ant Design Pro项目文件夹&#xff0c;将其完全删除。清除npm缓存&#xff1a;在命令行中运行npm cache clean --force以清除npm的缓…

1.python爬虫爬取视频网站的视频可下载的源url

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、爬取的源网站二、实现代码总结 一、爬取的源网站 http://www.lzizy9.com/ 在这里以电影片栏下的动作片为例来爬取。 可以看到视频有多页&#xff0c;因此需要…

XYCTF2024 RE ez unity 复现

dll依然有加壳 但是这次global-metadata.dat也加密了&#xff0c;原工具没办法用了&#xff0c;不过依然是可以修复的 a. 法一&#xff1a;frida-il2cpp-bridge 可以用frida-il2cpp-bridge GitHub - vfsfitvnm/frida-il2cpp-bridge: A Frida module to dump, trace or hijac…

Anaconda的环境快速迁移(目前windows,未来更新linux)

摘要&#xff1a; 日常办公经常需要在新机器上部署运行环境并进行代码调试&#xff0c;尤其是在AI迅速发展的今天&#xff0c;python已经成为了强有力的AI领域编程语言之一。为了方便对不同windows下python代码工程进行快速部署。本文主要从工具环境的安装、原环境的快速打包、…

数组操作push、pop、shift、unshift操作

这四个都是用来操作数组的,用于插入和删除元素 成对来说 push、pop都是从数组尾部操作(你看p开头的,就记住屁股就行了),分别是插入和弹出 let array [1,2,3,4,5,6] array.push(7) // 7 array // [1,2,3,4,5,6,7]push操作,数组从尾部插入,返回插入后数组的个数,改变了原数组…

【计算机毕业设计】基于SpringBoot+Vue智能停车计费系统设计与实现

目录 一、项目介绍 二、项目主要技术 三、系统功能结构设计 四、系统详细功能的实现 4.1 前台功能实现 4.2 管理员模块实现 4.3 用户后台模块实现 五、实现代码 一、项目介绍 该系统采用了java技术、SpringBoot 框架&#xff0c;连接MySQL数据库&#xff0c;具有较高…

代码随想录算法训练营第四十一天

昨天是摸鱼的一天&#xff0c;不过把电脑换了个位置&#xff0c;今天努力完成两天的任务&#xff0c;就可以玩啦&#xff01;&#xff01;加油&#xff01; 343. 整数拆分 我写的其实有点解释不通dp[0]和dp[1] class Solution { public:int integerBreak(int n) {vector<in…

Python queue使用方法

在Python中&#xff0c;queue 是一个提供线程安全队列操作的模块&#xff0c;它支持多种类型的队列&#xff0c;包括先进先出&#xff08;FIFO&#xff09;和后进先出&#xff08;LIFO&#xff09;。以下是如何使用 Python queue 模块的一些基本示例&#xff1a; 安装 通常情…

Flutter分模块开发、模块可单独启动、包含Provider

前言 目前Flutter都是在一个项目中&#xff0c;创建不同目录进行模块开发&#xff0c;我进行Android原生开发时&#xff0c;发现原生端&#xff0c;是可以将每个模块独立运行起来的&#xff0c;灵感来自这&#xff1b; 折腾了几天&#xff0c;终于给整出来了。 1、创建根目录…