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

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.lryc.cn/news/254439.html

相关文章:

  • 当初为什么选择计算机这类的行业?
  • tif文件转png、Excel
  • 【PyTorch】训练过程可视化
  • 深入理解Go语言GC机制
  • qt-C++笔记之组件-分组框QGroupBox
  • qt 定时器用法
  • 用23种设计模式打造一个cocos creator的游戏框架----(九)访问者模式
  • 根文件系统初步测试
  • 【精选】设计模式——策略设计模式-两种举例说明,具体代码实现
  • 外包干了3个月,技术倒退2年。。。
  • 微信小程序:chooseimage从本地相册选择图片或使用相机拍照
  • 「Swift」取消UITableView起始位置在状态栏下方开始
  • android高版本适配使用Tools.java
  • 面试官:说说webpack中常见的Loader?解决了什么问题?
  • 【蓝桥杯省赛真题50】Scratch智能计价器 蓝桥杯scratch图形化编程 中小学生蓝桥杯省赛真题讲解
  • 折半查找(数据结构实训)
  • AR助推制造业智能转型:实时远程协作与可视化引领生产创新
  • 【用unity实现100个游戏之18】从零开始制作一个类CSGO/CS2、CF第一人称FPS射击游戏——基础篇3(附项目源码)
  • sed 流式编辑器
  • Linux shell编程学习笔记33:type 命令
  • 【数据结构】—红黑树(C++实现)
  • 内衣洗衣机和手洗哪个干净?高性价比内衣洗衣机推荐
  • TikTok与互动广告:品牌如何打破传统界限
  • 跟着Nature Communications学习Hisat-Trinity-PASA等分析流程
  • Unity中Batching优化的动态合批
  • 2022年第十一届数学建模国际赛小美赛B题序列的遗传过程解题全过程文档及程序
  • 【Linux】静态库与动态库制作及运行原理
  • 工具站推荐
  • 【JS】toFixed()无法精准保留小数的解决方案
  • vue3版本学习