首頁 > 軟體

Go web入門Go pongo2模板引擎

2022-05-20 19:04:25

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-0d938eb266f3
go: downloading github.com/flosch/pongo2/v4 v4.0.2
go: downloading gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b
go: downloading github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e
go: downloading github.com/kr/text v0.1.0
go: added github.com/flosch/pongo2/v4 v4.0.2

pongo2 在模板字串中使用了各種分隔符:

{% %} - 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 main
import (
    "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 main
import (
    "fmt"
    "github.com/flosch/pongo2/v4"
    "log"
)
func main() {
    tpl, err := pongo2.FromString("{{ name }}是{{ occupation }}")
    if err != nil {
        log.Fatal(err)
    }
    name, occupation := "宇宙之一粟", "程式猿

IT145.com E-mail:sddin#qq.com