将HTML代码加载到Gin框架模板中。

huangapple go评论85阅读模式
英文:

load html code into gin framework template

问题

我是你的中文翻译助手,以下是翻译好的内容:

我刚开始学习Go语言和Gin框架。我有一个HTML文件,内容如下:

example.html

<div>
    <p>测试文本</p>
    <p><img src="https://clipartcraft.com/images/google-logo-transparent-alphabet.png" alt="sampleImage"/></p>
    <p>测试文本</p>
</div>

我想将这个HTML文件加载到模板的内容部分中。

index.tmpl

<html>
	<h1>
		{{ .title }}
	</h1>
        {{ .content }}
</html>

使用以下代码:

main.go

package main

import (
	"net/http"
	"os"

	"github.com/gin-gonic/gin"
)

func check(e error) {
	if e != nil {
		panic(e)
	}
}

func main() {
	dat, err := os.ReadFile("./example.html")
	check(err)

	router := gin.Default()
	router.LoadHTMLGlob("templates/*")
	router.GET("/index", func(c *gin.Context) {
		c.HTML(http.StatusOK, "index.tmpl", gin.H{
			"title":   "主要网站",
			"content": string(dat),
		})
	})
	router.Run(":8080")
}

但是它不起作用,Gin显示源代码(HTML),而不是将其渲染为HTML文件,例如图像等。我应该如何加载HTML代码到我的模板中,以便Gin将其作为HTML渲染?

HTML代码可以从文件中读取(就像这个示例)或稍后从数据库中调用。

英文:

I am new to go and [gin framework]https://gin-gonic.com/
I have an HTML file like this
example.html

&lt;div&gt;
    &lt;p&gt; text for test &lt;p&gt;
    &lt;p&gt;&lt;img src=&quot;https://clipartcraft.com/images/google-logo-transparent-alphabet.png&quot; alt=&quot;sampleImage&quot;/&gt;&lt;/p&gt;
    &lt;p&gt; text for test &lt;p&gt;
&lt;/div&gt;

that I want load that in content part of this template
index.tmpl

&lt;html&gt;
	&lt;h1&gt;
		{{ .title }}
	&lt;/h1&gt;
        {{ .content }}
&lt;/html&gt;

with this code:
main.go

package main

import (
	&quot;net/http&quot;
	&quot;os&quot;

	&quot;github.com/gin-gonic/gin&quot;
)

func check(e error) {
	if e != nil {
		panic(e)
	}
}

func main() {
	dat, err := os.ReadFile(&quot;./example.html&quot;)
	check(err)

	router := gin.Default()
	router.LoadHTMLGlob(&quot;templates/*&quot;)
	router.GET(&quot;/index&quot;, func(c *gin.Context) {
		c.HTML(http.StatusOK, &quot;index.tmpl&quot;, gin.H{
			&quot;title&quot;:   &quot;Main website&quot;,
			&quot;content&quot;: string(dat),
		})
	})
	router.Run(&quot;:8080&quot;)
}

It is not work and gin show source code(html) not render as HTML file like image etc...
How should load an HTML code in my template that gin render this as HTML.
HTML code can be read from a file (like this example) or call from a database later

答案1

得分: 2

感谢mkopriva
"content": template.HTML(dat),

英文:

Thanks mkopriva
&quot;content&quot;: template.HTML(dat),

huangapple
  • 本文由 发表于 2023年1月1日 23:19:03
  • 转载请务必保留本文链接:https://go.coder-hub.com/74975426.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定