Go pongo2 迭代
for
语句用于迭代模板中的数据集合。
- 新建一个
words.tpl
文件:
{% for word in words -%} {{ word }} {% endfor %}
- 在模板中,我们使用 for 指令来遍历 words 数据结构的元素。可以用
-
字符去除空白字符。
package main import ( "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 main import ( "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 characters
Go pongo2 条件
可以使用 if/endif
指令创建条件。
- 新建一个
todo.tpl
文件:
{% for todo in todos -%} {% if todo.Done %} {{- todo.Title -}} {% endif %} {% endfor %}
在模板文件中,我们使用 if 指令仅输出已完成的任务。
- 我们从一片待办事项中生成输出。在输出中,我们仅包含已完成的任务。
package main import ( "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 的第三方扩展库,都值得一看,哪个方便用哪个。
网络异常,图片无法展示
|
感谢阅读,下一篇文章再见~