gpt4 book ai didi

go - 如何在html文件中编写golang代码(gin gonic框架)

转载 作者:IT王子 更新时间:2023-10-29 01:21:44 25 4
gpt4 key购买 nike

我是 golang 代码和 gin gonic 的新手。我在使用 gin gonic 时遇到问题。

在我的 Controller 中。我获取所有文章并通过代码呈现为 html 文件。

c.HTML(http.StatusOK, "articles/list", gin.H{
"title": "Articles",
"articles": articles,
})

并且文章的字段“CreatedOn”类型为 int64(创建日期)所以在我的 View list.html 中,我如何将 CreateOn 类型的 int64 解析为日期格式。

<div class="list-group">
{{ range $article := $articles }}
<a href="/articles/{{ $article.Id }}" class="list-group-item">
<h4 class="list-group-item-heading">{{ $article.Title }}</h4>
<p class="list-group-item-text">{{ $article.Body }}</p>
<p class="list-group-item-text">{{ $article.CreatedOn }}</p>
<p class="list-group-item-text"></p>
</a>
{{ end }}
</div>

谢谢大家

我找到了一种编写方法 FormatDate() 的方法

func (a *Article) FormatDate(ab int64) string {
return "test Time"
}

在模型“文章”中。然后在我看来我调用

  <p class="list-group-item-text">{{ .FormatDate article.CreatedOn  }}</p>

还有什么吗????

最佳答案

TL;DR use SetHTMLTemplate

看着 Gin documentation ,您可以使用自己的模板引擎。

通过调用r.SetHTMLTemplate(tmpl)

Gin 本身使用的是 golang 内置的 html/template 标准包。

您可以使用相同的引擎并添加用户定义的函数

使用 template.FuncMap 创建函数:

funcMap := template.FuncMap{
"formatTime": func(raw int64) string {
t := time.Unix(raw, 0)

return t.Format("Jan 2 15:04:05 2006")
},
}

实例化一个模板:

tmpl := template.Must(template.New("main").Funcs(funcMap).ParseGlob("templates/**/*"))

注册新模板:

r := gin.Default()
r.SetHTMLTemplate(tmpl)

如果您对不同的端点使用相同的模板名称,请指定名称:

{{ define "articles/list.tmpl"}}

<div class="list-group">
{{ range $article := .articles }}
<a href="/articles/{{ $article.Id }}" class="list-group-item">
<h4 class="list-group-item-heading">{{ $article.Title }}</h4>
<p class="list-group-item-text">{{ formatTime $article.CreatedOn }}</p>
<p class="list-group-item-text"></p>
</a>
{{ end }}
</div>

{{ end }}

formatTime: Is defined using template.FuncMap

要调用,请使用正常方式:

c.HTML(http.StatusOK, "articles/list", gin.H{
"title": "Articles",
"articles": articles,
})

关于go - 如何在html文件中编写golang代码(gin gonic框架),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38139584/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com