当前位置: 首页 > article >正文

fastapi.templating与HTMLResponse

要声明一个模板对象,应将存储html模板的文件夹作为参数提供。在当前工作目录中,我们将创建一个 “templates “目录。
templates = Jinja2Templates(directory=“templates”)

我们现在要把这个页面的HTML代码渲染成HTMLResponse。让我们修改一下hello()函数

from fastapi.responses import HTMLResponse
from fastapi.templating import Jinja2Templates
from fastapi import FastAPI, Request
app = FastAPI()
templates = Jinja2Templates(directory="templates")
@app.get("/hello/", response_class=HTMLResponse)
async def hello(request: Request):
   return templates.TemplateResponse("hello.html", {"request": request})

一个简单的网页 “hello.html “来呈现 “Hello World “信息,也被放在 “templates “文件夹中

<html>
<body>
<h2>Hello World!</h2>
</body>
</html>

在这里,模板对象的 templateResponse() 方法收集了模板代码和请求上下文来渲染http响应。当我们启动服务器并访问http://localhost:8000/hello/ URL时,我们可以在浏览器中看到 Hello World 的信息,这实际上是 hello.html 的输出。

jinja2模板允许在HTML代码中嵌入某些占位符。jinja2的代码元素被放在大括号内。一旦浏览器的HTML解析器遇到这种情况,模板引擎就会接手,通过HTTP响应提供的变量数据来填充这些代码元素。Jinja2提供了以下代码元素 –

{% %} – 语句
{{ }} – 打印到模板输出的表达式

{# #} – 不包括在模板输出中的注释

# – 行语句

hello.html 被修改如下,通过替换name参数来显示一个动态信息

<html>
<body>
<h2>Hello {{name}} Welcome to FastAPI</h2>
</body>
</html>

操作函数 hello() 也被修改为接受name作为路径参数。 TemplateResponse 还应该包括 “name”:name 的JSON表示,以及请求上下文。

from fastapi.responses import HTMLResponse
from fastapi.templating import Jinja2Templates
from fastapi import FastAPI, Request
app = FastAPI()
templates = Jinja2Templates(directory="templates")
@app.get("/hello/{name}", response_class=HTMLResponse)
async def hello(request: Request, name:str):
   return templates.TemplateResponse("hello.html", {"request": request, "name":name})

重新启动服务器并进入http://localhost:8000/hello/Kiran。浏览器现在用这个URL中的路径参数来填充jinja2的位置符
在这里插入图片描述


http://www.kler.cn/a/159519.html

相关文章:

  • 基于Python 和 pyecharts 制作招聘数据可视化分析大屏
  • 人力资源招聘系统的革新之路:从传统到智能的转变
  • MaxKB
  • 工作和学习遇到的技术问题
  • SQL 中 BETWEEN AND 用于字符串的理解
  • Dockerfile的使用
  • 华为OD机试 - 九宫格按键输入 - 逻辑分析(Java 2023 B卷 200分)
  • 腾讯面试真题(C语言)
  • 【链表Linked List】力扣-83 删除排序链表中的重复元素
  • 有什么可视化数据管理工具?
  • 同旺科技 USB TO RS-485 定制款适配器--- 拆解(一)
  • MyBatisPlus+SpringBoot+JavaFX连接查询
  • 技术阅读周刊第第8️⃣期
  • Temporal table join requires an equality condition on fields of table
  • 【2】基于多设计模式下的同步异步日志系统-设计模式
  • git小白初学习
  • 腾讯云位居中国分布式关系型数据库“领导者”类别
  • 基于SSM实现的公文管理系统
  • 玩转数据8:数据质量管理与数据清洗的实践
  • 深度学习火车票识别系统 计算机竞赛
  • 石油化工园区:安全管理工作中的挑战与措施
  • 【上海大学数字逻辑实验报告】四、组合电路(三)
  • C语言——深入理解指针(4)
  • (C++20) consteval立即函数
  • MiniDumpWriteDump函数生成dmp文件
  • 【华为数据之道学习笔记】2-建立企业级数据综合治理体系