如何在html文件中编写golang代码(gin gonic框架)
How to write golang code in html file (gin gonic framework)
我是 golang 代码和 gin gonic 的新手。我在使用 gin gonic 时遇到问题。
在我的控制器中。我获取所有文章并通过代码呈现到 html 文件。
c.HTML(http.StatusOK, "articles/list", gin.H{
"title": "Articles",
"articles": articles,
})
并且文章的字段 "CreatedOn" 类型为 int64(创建日期)
所以在我看来 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"
}
模型 "Article"。然后在我看来我打电话给
<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,
})
我是 golang 代码和 gin gonic 的新手。我在使用 gin gonic 时遇到问题。
在我的控制器中。我获取所有文章并通过代码呈现到 html 文件。
c.HTML(http.StatusOK, "articles/list", gin.H{
"title": "Articles",
"articles": articles,
})
并且文章的字段 "CreatedOn" 类型为 int64(创建日期) 所以在我看来 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"
}
模型 "Article"。然后在我看来我打电话给
<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,
})