Go Web 编程入门:Go pongo2 模板引擎_51CTO博客_Go Web 编程


本站和网页 https://blog.51cto.com/yuzhou1su/5298679 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

Go Web 编程入门:Go pongo2 模板引擎_51CTO博客_Go Web 编程
Go Web 编程入门:Go pongo2 模板引擎
关注
宇宙之一粟
文章目录
下载 pongo2 函数库
从字符串中读取模板
从文件中读取文本
Go pongo2 迭代
Go pongo2 过滤
Go pongo2 条件
总结
Go Web 编程入门:Go pongo2 模板引擎
精选
原创
宇宙之一粟
2022-05-16 23:50:38
博主文章分类:Go语言入门很简单
©著作权
文章标签
github
模板引擎
字符串
文章分类
Go语言
后端开发
私藏项目实操分享
©著作权归作者所有:来自51CTO博客作者宇宙之一粟的原创作品,请联系作者获取转载授权,否则将追究法律责任
​​Go pongo2​​ 教程展示了如何使用 pongo2 模板引擎在 Golang 中使用模板。模板引擎是一个库,旨在将模板与数据结合起来以生成文档。模板引擎用于生成大量电子邮件、源代码预处理或生成动态 HTML 页面。模板由静态数据和动态区域组成。动态区域稍后被数据替换。渲染函数稍后将模板与数据结合起来。模板引擎用于将模板与数据模型相结合以生成文档。pongo2 库是一个受 Django 模板引擎启发的 Go 模板引擎。下载 pongo2 函数库使用如下命令:go get -u github.com/flosch/pongo2/v4安装成功后可以看到如下输出:go: downloading github.com/flosch/pongo2 v0.0.0-20200913210552-0d938eb266f3go: downloading github.com/flosch/pongo2/v4 v4.0.2go: downloading gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05bgo: downloading github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8ego: downloading github.com/kr/text v0.1.0go: added github.com/flosch/pongo2/v4 v4.0.2pongo2 在模板字符串中使用了各种分隔符:{% %} - statements{{ }} - expressions to print to the template output{# #} - comments which are not included in the template output# ## - line statements模板可以从带有 ​​pongo2.FromString​​ 的字符串、带有 ​​pongo2.FromFile​​ 的文件或带有​​pongo2.FromBytes​​ 的字节中读取。文档使用 ​​Execute​​、​​ExecuteWriter​​ 或 ​​ExecuteBytes​​ 函数呈现。这些函数接受一个上下文,它为模板提供常量、变量、实例或函数。从字符串中读取模板​​pongo2.FromString​​ 函数从字符串中读取模板。如下代码将生成一条简单的文本消息:package mainimport ( "fmt" "github.com/flosch/pongo2/v4" "log")func main() { tpl, err := pongo2.FromString("Hello {{ name }}~") if err != nil { log.Fatal(err) } res, err := tpl.Execute(pongo2.Context{"name": "宇宙之一粟"}) if err != nil { log.Fatal(err) } fmt.Println(res)}要打印的变量放在 {{ }} 括号内。tpl, err := pongo2.FromString("Hello {{ name }}!")接着,我们使用 Execute 渲染最终的字符串。在上下文中,我们为 name 变量传递一个值 “宇宙之一粟”:res, err := tpl.Execute(pongo2.Context{"name": "宇宙之一粟"})最后,运行该代码:$ go run main.go Hello 宇宙之一粟~如下图:再来看一个例子,我们可以传递两个文本:package mainimport ( "fmt" "github.com/flosch/pongo2/v4" "log")func main() { tpl, err := pongo2.FromString("{{ name }}是{{ occupation }}") if err != nil { log.Fatal(err) } name, occupation := "宇宙之一粟", "程序猿👨‍💻‍" ctx := pongo2.Context{"name": name, "occupation": occupation} res, err := tpl.Execute(ctx) if err != nil { log.Fatal(err) } fmt.Println(res)}运行该代码:$ go run main.go宇宙之一粟是程序猿👨‍💻‍从文件中读取文本使用 ​​pongo2.FromFile​​ 函数,我们从文件中读取模板。新建一个 test.tpl 模板文件:{{ name }}是{{ occupation }} 该示例生成一条简单的消息,同时从文件中读取模板。写好 main.go 文件:package mainimport ( "fmt" "github.com/flosch/pongo2/v4" "log")func main() { tpl, err := pongo2.FromFile("test.tpl") if err != nil { log.Fatal(err) } name, occupation := "宇宙之一粟", "不掉发的程序猿" ctx := pongo2.Context{"name": name, "occupation": occupation} res, err := tpl.Execute(ctx) if err != nil { log.Fatal(err) } fmt.Println(res)}运行该程序:$ go run main.go宇宙之一粟是不掉发的程序猿Go pongo2 迭代​​for​​ 语句用于迭代模板中的数据集合。新建一个 words.tpl 文件:{% for word in words -%} {{ word }}{% endfor %}在模板中,我们使用 for 指令来遍历 words 数据结构的元素。可以用 - 字符去除空白字符。package mainimport ( "fmt" "github.com/flosch/pongo2/v4" "log")func main() { tpl, err := pongo2.FromFile("words.tpl") if err != nil { log.Fatal(err) } words := []string{"只要", "对", "编码", "保持", "热爱", "!"} ctx := pongo2.Context{"words": words} res, err := tpl.Execute(ctx) if err != nil { log.Fatal(err) } fmt.Println(res)}在程序中,我们将一段单词传递给 tempate 引擎。我们得到一个单词列表作为输出。$ go run main.go只要对编码保持热爱!Go pongo2 过滤可以将过滤器应用于数据以修改它们。在 ​​|​​ 之后应用过滤器特点。更改 words.tpl 文件{% for word in words -%} {{ word }} has {{ word | length }} characters{% endfor %}main 文件:package mainimport ( "fmt" "github.com/flosch/pongo2/v4" "log")func main() { tpl, err := pongo2.FromFile("words.tpl") if err != nil { log.Fatal(err) } words := []string{"只要", "对", "编码", "保持", "热爱", "!"} ctx := pongo2.Context{"words": words} res, err := tpl.Execute(ctx) if err != nil { log.Fatal(err) } fmt.Println(res)}在程序中,我们将一段单词传递给模板。我们打印每个单词及其大小。运行该程序:只要 has 2 characters对 has 1 characters编码 has 2 characters保持 has 2 characters热爱 has 2 characters! has 1 charactersGo pongo2 条件可以使用 ​​if/endif​​ 指令创建条件。新建一个 todo.tpl 文件:{% for todo in todos -%} {% if todo.Done %} {{- todo.Title -}} {% endif %}{% endfor %}在模板文件中,我们使用 if 指令仅输出已完成的任务。我们从一片待办事项中生成输出。在输出中,我们仅包含已完成的任务。package mainimport ( "fmt" "github.com/flosch/pongo2/v4" "log")type Todo struct { Title string Done bool}type Data struct { Todos []Todo}func main() { tpl, err := pongo2.FromFile("todo.tpl") if err != nil { log.Fatal(err) } todos := []Todo{ {Title: "看书一小时", Done: false}, {Title: "写代码五小时", Done: true}, {Title: "吃饭三餐", Done: true}, {Title: "不加班", Done: false}, {Title: "日更写文章", Done: true}, } ctx := pongo2.Context{"todos": todos} res, err := tpl.Execute(ctx) if err != nil { log.Fatal(err) } fmt.Println(res)}运行代码:$ go run main.go写代码五小时吃饭三餐日更写文章总结这篇文章介绍了第三方模板库 pongo2,pongo2 是一种类似于 Django 语法的 Go 的模板语言。并介绍了从字符串和文件中两种方式获取文本,并介绍了 pongo2 的迭代、过滤和 ​​if​​ 条件的使用,并给出了每个代码案例,希望能对你有帮助。关于 pongo2 的更多用法请参考官方链接,还有更多基于 pongo2 的第三方扩展库,都值得一看,哪个方便用哪个。感谢阅读,下一篇文章再见~参考链接:GitHub - flosch/pongo2: Django-syntax like template-engine for Gohttps://zetcode.com/golang/pongo2/
收藏
评论
分享
举报
上一篇:Go 语言入门很简单:在 Go 语言中使用 exec
下一篇:Go 语言入门很简单:AES加密和解密
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
全部评论
()
最热
最新
相关文章
go1-base
一.demo1package mainimport "fmt"func main() {s1 := "[1]建议换行符号'\\r\\n' windows='\\n' linux='\\r\\n'\n\r"s2 := "go run main.go\t\tgo build main.go\tmain.exe\r\n"s3 := "gofmt main.go\t\tgofmt -w
单行注释
多行注释
插件使用
无涯教程-Go - Maps(映射)
Go提供了另一个重要的数据类型,称为map,它将唯一键映射到值,键(key)是一个对象 ,您可以在以后使用它...
go
Go程序的交叉编译
Go程序的交叉编译是每一位GO程序猿必须掌握的知识点。但是我没有。在昨天,我编译了一个项目,生成了二进制,放到目标机器上,执行报错,错误如下:bash: ./api.linux: cannot execute binary file: Exec format error提示很明显,可执行文件格式错误,不能执行二进制文件。直接定位到了,是目标机器的内核跟我的Macbook Pro不匹配;接着在目标系
cannot execute binar
Exec format error
GOARCH
GO交叉编译
aarch64
GO-模板引擎
第 6 章:模板引擎Go 为我们提供了 text/template 库和 html/template 库这两个模板引擎,模板引擎通过将数据和模板组合在一起生成最终的 HTML,而处理器负责调用模板引擎并将引擎生成的 HTMl 返回给客户端。Go 的模板都是文本文档(其中 Web 应用的模板通常都是 HTML),它们都嵌入了一些称为动作的指令。从模板引擎的角度来说,模板就是嵌入了动作的文本(这些...
html
js
数据
模板引擎
迭代
go进阶篇gin框架系列二一、模板引擎
<p>钟渊go go go</p>
gin
html
golang
模板引擎
HTML
go语言html包 golang html模板引擎
Go语言内置了 text/template 和 html/template两个模板库,专门用于处理网页html模板。html/template 是在 text/template 模板库的基础上增加了对html输出的安全处理,主要目的是为了防止被攻击。下面通过一个例子介绍template的用法。模版引擎使用流程:编写模版代码导入包加载模版代码根据模版参数渲染模版1.快速入门例子1.1.编写模版代码将
go语言html包
golang 模板引擎 html
模版
html
加载
模板引擎java 模板引擎velocity
1、velocity简介:   velocity是一个java模板引擎技术,任何人可以使用这种简单而又强有力的模板语言去获取java对象。  在使用Velocity进行web开发时,web开发人员和java程序员可以同时根据Model-View-Controller(MVC)模型,进行网站开发,这也意味着web开发人员可以纯粹的专注于创建看起来好看的网页而程序员可
模板引擎java
ci
java
apache
java 模板引擎 模板变量 java模板引擎原理
一、Thymeleaf(一)模板引擎模板引擎,是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的HTML文档。使用模板引擎的目的就是为了实现前后端分离。JSP也是一种模板引擎,其与大量的Java代码相绑定,使前后端无法分离,产生混淆。JSP中可以嵌入Java代码块。JSP中的标签是对Java代码的一种封装,也就是说,JSP中的标签本质也是
java 模板引擎 模板变量
python
java
jsp
javascript
java 模板 引擎 java模板引擎+element
最近由于工作需要全栈开发,nodejs做后端,在写一个后台管理系统的时候,我一直在考虑用怎样的方式去写,尝试过依然采用前后端分离的结构、使用json数据进行数据交互的模式,但是尝试过才知道,真的很花时间和精力,大部分精力都花在了前端构建上面了。后来我想到了模板引擎,采用现成的UI框架直接套用,然后通过模板引擎直接在服务端生成HTML代码。node常用的模板引擎有ejs和jade,都说jade很牛逼
java 模板 引擎
java模板引擎 jade
css
bootstrap
HTML
javan模板引擎 java的模板引擎
作为一个工作一年的菜鸟,在公司做了几个外包项目,也接触到了不同形式的web开发。其实也没多少,就是javaweb开发和HTML5移动开发,这两者在页面展示的时候的解决方案还是有所不同的。1、vo+el表达式  在javaweb开发中,我们使用的是SSM框架(Spring,SpringMVC,Mybatis)。一些页面的跳转,我们通过返回SpringMVC的ModelAndView来实现,并采用这种
javan模板引擎
javascript
json
前端
ViewUI
Java 模板引擎velocity java 模板引擎
模板引擎模板引擎的目标是“数据+模板=结果”模板引擎将数据与展现有效的“解耦”前端只需要知道怎么编写前端,后端只需关注后端,用模板引擎把两者整合主流的模板引擎Java Server Page(jsp)FreeMarkerBeetl(拥有前两者的优点,但是作为新的模板,还未普及,前面两个更常用)FreeMarker和JSP只要不是开发淘宝、京东这样的大型软件,两者的执行效率相差不多FreeMarke
Java 模板引擎velocity
freemarker
模板引擎
FreeMarker
python
ios 模板引擎 模板引擎实现原理
1. 什么是模版引擎:模板引擎(这里特指用于Web开发的模板引擎)是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的HTML文档。模板引擎不属于特定技术领域,它是跨领域跨平台的概念。在Asp下有模板引擎,在PHP下也有模板引擎,在C#下也有,甚至JavaScript、WinForm开发都会用
ios 模板引擎
javascript
c#
php
ViewUI
java 模板引擎 json java 模板引擎
Java模版引擎之Freemarker   取小数点后两位,均被四舍五入了,注意用m2M2是用#号[#assign varr1= 2.058931 /] ${varr1?string("0.00")} ${varr1?string("#.##")} #{varr1;m2M2}直接取.current_template_name(当前页面模板名,比如当前所在导航模板)和
java 模板引擎 json
#if
子串
内建函数
java常用模板引擎 javascript模板引擎
artTemplate是新一代javascript模板引擎,它在v8中的渲染效率可接近javascript性能极限,在chrome下渲染效率测试中分别是知名引擎Mustache与micro tmpl的25/32倍(性能测试);artTemplate的模板还支持使用自动化工具预编译;artTemplate的库分为两种,一个是template.js(采用"{{ }}"),一个是template-nat
java常用模板引擎
javascript
webpack
json
ViewUI
模板引擎Velocity java 模板引擎原理
一、模板引擎概念模板引擎(这里特指用于Web开发的模板引擎)是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的HTML文档。模板引擎不属于特定技术领域,它是跨领域跨平台的概念。在Asp下有模板引擎,在PHP下也有模板引擎,在C#下也有,甚至JavaScript、WinForm开发都会用到模板引擎技术。二、模板引擎原理模板引擎的实现方式有很
模板引擎Velocity java
模板引擎
html
数据
java 模板引擎语法 jfinal 模板引擎
JFinal是一种模板引擎。JFinal Template Engine 中的指令非常简单且核心指令只有6个,便于学习和使用。大部分指令见名知义如:#if、#for、#set、#include、#define、#(),最后一个是输出指令。在开始指令学习之前,想先简单的介绍一下模板引擎。什么是Web模板引擎?答:Web模板引擎是一种生成HTML文档规范的技术实现。为什么要使用模板去进行Web开发?答
java 模板引擎语法
Jfinal
模板引擎
取值
程序语言
模板引擎
页)。 置换型模板引擎实现简单,但其效率底下,无法满足高负载的应用需求...
模板引擎
数据
用户界面
代码重用
开发效率
java 主流模板渲染引擎 javaweb模板引擎
一、什么是模板引擎: 模板引擎我理解的就是写好了静态页面,在其中动态加载好数据,在项目启动的时候,将静态的html页面加载出来,然后将数据绑定其中,这样一定程度上减少了加载时占用CPU的时间。二、模板引擎的好处 显而易见的好处就是可以提高了加载的速度,提高了性能,模板引擎可以精确定位
java 主流模板渲染引擎
java引擎
beetl模板引擎
css
javascript
Java 模板引擎 java模板引擎有哪些
1) freemarker 介绍 FreeMarker 是一款 模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。 模板编写为FreeMarker Template Language (FTL)。它是简单的,专用的语言, 不是 像PHP那样成
Java 模板引擎
java
servlet
apache
springboot
模板引擎生成java代码 模板引擎 thymeleaf
SpringBoot Thymeleaf模板引擎本节学习一下 SpringBoot 中的模板引擎,以 Thymeleaf 为例,仍在 SpringBoot-03-Web 项目中!1. Thymeleaf简介首先明确一下模板引擎的概念:模板引擎是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的 HTML 文档。简单来说,之前用的 JSP 也
模板引擎生成java代码
java
mvc
模板引擎
html
用python海龟模块画小猪佩奇 python海龟编辑器画小汽车
第2章 海龟作图—用Python 绘图在本章中,我们将编写简短的、简单的程序来创建漂亮的、复杂的视觉效果。为了做到这一点,我们可以使用海龟作图软件。在海龟作图中,我们可以编写指令让一个虚拟的(想象中的)海龟在屏幕上来回移动。这个海龟带着一只钢笔,我们可以让海龟无论移动到哪都使用这只钢笔来绘制线条。通过编写代码,以各种很酷的模式移动海龟,我们可以绘制出令人惊奇的图片。使用海龟作图,我们不
用python海龟模块画小猪佩奇
python
Python
迭代
for循环
微星bios无法使用鼠标 微星主板bios鼠标设置
  微星Interceptor DS102 RGB游戏鼠标是微星在近期推出的百元级入门游戏鼠标,这款鼠标拥有不错的外观颜值,较为均衡的硬件配置与重量,一经上市就受到了消费者的喜爱。笔者也对这款鼠标进行了拆解,接下来就让我们看看这款鼠标内部构造如何。   微星Interceptor DS102 RGB游戏鼠标采用对称式造型设计,搭载了PMW3325光学传感器与欧姆龙2000万次
微星bios无法使用鼠标
鼠标侧键能改为ctrl吗
模块化
电磁干扰
信号传输
arkts 封装axios ark server api
自从《方块方舟》上架Steam启动Early Access(抢先体验)以来,我们已深切感受到了大家的热情,同时也深刻认识到做好《方块方舟》的责任与义务。对于《方块方舟》部分表现不尽人意的地方,我们向各位玩家表示诚挚的歉意,同时我们也会尽全力改善产品,力争让大家有一个美好的游戏体验。针对大家反应比较集中的“自定义服务器问题”,研发大大夜以继日,给出了一个解决方案,下面就由小方我来简单说明一下这个工具
arkts 封装axios
正版方舟建服务器
服务器
Server
Startup
两个列表如何快速比较两个两别是否完全一样 Java 两个列表如何对比筛选
经常被人问到怎么对两份Excel数据进行比对,提问的往往都很笼统;在工作中,有时候会需要对两份内容相近的数据记录清单进行比对,需求不同,比对的的目标和要求也会有所不同。下面Office办公助手(www.officezhushou.com)的小编根据几个常见的应用环境介绍一下Excel表格中数据比对和查找的技巧。应用案例一:比对取出两表的交集(相同部分)Sheet1中包含了一份数据清单A,sheet
数据
数据区
功能区
pytorch 虚拟对抗损失 生成对抗网络代码pytorch
?大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流??欢迎各位→点赞? + 收藏⭐️ + 留言??系列专栏 - 机器学习【ML】 自然语言处理【NLP】 深度学习【DL】 ?foreword✔说明⇢本人讲解主要包括Python、机器学习(ML)、深度学习(DL)、自然语言处理(NLP)等内容。如果你对这个系列感兴趣
pytorch 虚拟对抗损失
深度学习
生成对抗网络
人工智能
生成图片
宇宙之一粟
关注
私信
分类列表
更多
# Java 开发成长之路26篇
# 职场闯关的这些年儿22篇
# 我的校招求职之旅9篇
# Go语言入门很简单134篇
# 数据结构与算法12篇
近期文章
1.家政小程序开发:重塑家政服务行业的未来
2.PMP成绩查询及电子版证书下载
3.[word] 高效完成工作的方法,这几招Word技巧要学
4.IPQ4019: Revolutionizing Long-Range Wireless Connectivity
5.[word] word文档怎么自动编号?
文章目录
下载 pongo2 函数库
从字符串中读取模板
从文件中读取文本
Go pongo2 迭代
Go pongo2 过滤
Go pongo2 条件
总结
每日签到
意见反馈
举报文章
请选择举报类型
内容侵权
涉嫌营销
内容抄袭
违法信息
其他
具体原因
包含不真实信息
涉及个人隐私
原文链接(必填)
补充说明
0/200
上传截图
格式支持JPEG/PNG/JPG,图片不超过1.9M
取消
确认
已经收到您得举报信息,我们会尽快审核
收藏
评论
分享
如有误判或任何疑问,可联系 「小助手微信:cto51cto」申诉及反馈。
我知道了
51CTO首页
内容精选
博客
学堂
精品班
直播训练营
企业培训
CTO训练营
鸿蒙开发者社区
WOT全球技术创新大会
公众号矩阵
移动端
短视频
免费课程
课程排行
直播课
软考学堂
全部课程
厂商认证
IT技术
2024年软考
PMP项目管理
软考资讯
在线学习
CTO训练营
技术经理研习营
LeaTech峰会
文章
资源
问答
课堂
专栏
直播
51CTO
鸿蒙开发者社区
51CTO技术栈
51CTO官微
51CTO学堂
51CTO博客
CTO训练营
鸿蒙开发者社区订阅号
51CTO题库小程序
51CTO学堂APP
51CTO学堂企业版APP
鸿蒙开发者社区视频号
51CTO博客
首页
关注
排行榜
订阅专栏
搜索历史
清空
热门搜索
查看【
】的结果
写文章
创作中心
登录注册
Copyright 2005-2024 51CTO.COM
版权所有 京ICP证060544号
关于我们
官方博客
全部文章
热门标签
班级博客
了解我们
网站地图
意见反馈
友情链接
鸿蒙开发者社区
51CTO学堂
51CTO
软考资讯