提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
gin框架模板渲染
这个目录的路径要放正确(虽然我也不知道为什么突然就解决了)
== 错误模板 ==
== 正确版本==
package main
import (
"net/http"
"github.com/gin-gonic/gin"
)
func main() {
r := gin.Default()
r.LoadHTMLGlob("templates/**/*") // ** 目录 *文件
//r.LoadHTMLFiles("templates/posts/index.html", "templates/users/index.html")
//路由
r.GET("/posts/index", func(c *gin.Context) {
c.HTML(http.StatusOK, "posts/index.tmpl", gin.H{
"title": "郑艺好帅",
})
})
//路由2
r.GET("users/index", func(c *gin.Context) {
c.HTML(http.StatusOK, "users/index.tmpl", gin.H{
"title": "郑艺好可爱",
})
})
r.Run(":8080")
}
== posts/index.tmpl==
{{define "posts/index.tmpl"}}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>posts/index</title>
</head>
<body>
{{.title}}
</body>
</html>
{{end}}
users/index/tmpl
{{define "users/index.tmpl"}}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>users/index</title>
</head>
<body>
{{.title}}
</body>
</html>
{{end}}
自定义模板函数
在index.tmpl中使用定义好的safe模板函数:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<title>修改模板引擎的标识符</title>
</head>
<body>
<div>{{ . | safe }}</div>
</body>
</html>
转义过的
未转义:
出现报错: undefined: template.HTML
template.HTML 是一个类型别名,用于表示安全的 HTML 文本。在 Go 语言中,使用 text/template 包时,可以使用 template.HTML 类型来确保 HTML 文本不会被转义,从而避免跨站脚本攻击(XSS)。
package main
import (
"net/http"
"text/template"
"github.com/gin-gonic/gin"
)
func main() {
r := gin.Default()
//gin框架中给模板添加自定义函数
r.SetFuncMap(template.FuncMap{
"safe": func(str string) template.HTML {
return template.HTML(str)
},
})
r.LoadHTMLGlob("templates/**/*") // ** 目录 *文件
//r.LoadHTMLFiles("templates/posts/index.html", "templates/users/index.html")
r.GET("/posts/index", func(c *gin.Context) {
c.HTML(http.StatusOK, "posts/index.tmpl", gin.H{
"title": "郑艺好帅",
})
})
r.GET("users/index", func(c *gin.Context) {
c.HTML(http.StatusOK, "users/index.tmpl", gin.H{
"title": "<a href = 'https://editor.csdn.net/md/?articleId=139142719'>郑艺的博客</a>",
})
})
r.Run(":8080")
}
解决方案
import (
"html/template" //导入这个库
"net/http"
"github.com/gin-gonic/gin"
)
静态文件处理
func main() {
r := gin.Default()
r.Static("/static", "./statics")//在解析静态模板之前,加上你的静态文件要去哪里找
//statics是存放静态文件的目录 当你在html文件中发现以xxx开头的就会指向statcis
r.LoadHTMLGlob("templates/**/*")
// ...
r.Run(":8080")
}
users/index,tmpl
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link rel ="stylesheet" href = "/xxx/index.css"> //引用CS文件
<title>users/index</title>
</head>
标签:index,users,渲染,posts,HTML,gin,tmpl,模板
From: https://blog.csdn.net/m0_74948742/article/details/139197718