1.Gin模板的基本使用方法
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>gin_templates</title> </head> <body> gin_index模板 {{.title}} </body> </html>
模板文件:我们首先定义一个存放模板文件的templates文件夹模板后端的支持代码:
package main import ( "github.com/gin-gonic/gin" "net/http" ) func main() { r := gin.Default() // 模板解析 r.LoadHTMLFiles("templates/index.tmpl") r.GET("/index", func(c *gin.Context) { // HTML请求 // 模板的渲染 c.HTML(http.StatusOK, "index.tmpl", gin.H{ "title": "imustctf.top", }) }) r.Run(":9090") // 启动server }
package main import ( "github.com/gin-gonic/gin" "net/http" ) func main() { r := gin.Default() // 模板解析,解析templates目录下的所有模板文件 r.LoadHTMLGlob("templates/**") r.GET("/index", func(c *gin.Context) { // HTML请求 // 模板的渲染 c.HTML(http.StatusOK, "index.tmpl", gin.H{ "title": "imustctf.top", }) }) r.GET("/users", func(c *gin.Context) { // HTML请求 // 模板的渲染 c.HTML(http.StatusOK, "users.tmpl", gin.H{ "title": "this is users tem", }) }) r.GET("/hey", func(c *gin.Context) { // HTML请求 // 模板的渲染 c.HTML(http.StatusOK, "hey.tmpl", gin.H{ "title": "this is hey tem", }) }) r.Run(":9090") // 启动server }
使用LoadHTMLGlob方法:
目录下有多个模板文件,我们进行统一渲染:templates
现在
2.多个模板渲染
此时访问本地地址9090端口下的index路径,可以看到,已经渲染成功:
渲染成功:
3.自定义模板函数
定义一个不转义相应内容的safe模板函数如下:
// gin框架给模板添加自定义函数 r.SetFuncMap(template.FuncMap{ "safe": func(str string) template.HTML { return template.HTML(str) }, }) // 模板解析,解析templates目录下的所有模板文件 r.LoadHTMLGlob("templates/**") r.GET("/index", func(c *gin.Context) { // HTML请求 // 模板的渲染 c.HTML(http.StatusOK, "index.tmpl", gin.H{ "title": "<a href='http://imustctf.top'>IMUSTCTF</a>", }) })
模板文件使用safe函数:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>gin_templates</title> </head> <body> gin_index模板 {{.title | safe}} </body>
渲染成功:自定义函数
4.静态文件处理
方法即可。gin.Static
当我们渲染的HTML文件中引用了静态文件时,我们只需要按照以下方式在渲染页面前调用静态文件:index.css
body{ background-color: aqua; }
引入静态文件的模板文件:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>gin_templates</title> <link rel="stylesheet" href="/xxx/index.css"> </head> <body> gin_index模板 {{.title}} </body> </html>
后端支持:
// 加载静态文件 r.Static("/xxx", "./static")
显示如下,加载静态文件成功: