【Gin】Gin模板渲染

简介: 1.Gin模板的基本使用方法我们首先定义一个存放模板文件的templates文件夹模板文件:



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")


显示如下,加载静态文件成功:


目录
相关文章
|
5天前
|
存储 人工智能 Go
探索Gin框架:Golang使用Gin完成文件上传
探索Gin框架:Golang使用Gin完成文件上传
|
5天前
|
JavaScript 前端开发 NoSQL
go embed 实现gin + vue静态资源嵌入
go embed 实现gin + vue静态资源嵌入
121 0
|
8月前
|
JSON 中间件 数据库连接
gin 框架中的 gin.Context
Context 是 gin 中最重要的部分。 例如,它允许我们在中间件之间传递变量、管理流程、验证请求的 JSON 并呈现 JSON 响应。Context 中封装了原生的 Go HTTP 请求和响应对象,同时还提供了一些方法,用于获取请求和响应的信息、设置响应头、设置响应状态码等操作。
239 0
gin 框架中的 gin.Context
|
10月前
|
中间件 Go API
Gin框架的路由解析与示例
本文将详细分析Gin框架的路由实现原理,并提供简单的代码示例以及运行结果。我们将通过深入探讨Gin框架的设计和代码结构,解释其背后的路由机制,并讨论如何使用Gin实现灵活的路由功能。
195 1
|
Go API
gin框架学习-快速安装gin
Gin 是一个用 Go (Golang) 编写的 Web 框架,由于 httprouter,它具有 martini 的 API,性能提高了 40 倍。具有高性能的优点。
134 0
gin框架学习-快速安装gin
基于Gin封装Web框架 - 3. 初始化 rum 框架
基于Gin封装Web框架 - 3. 初始化 rum 框架
157 0
基于Gin封装Web框架 - 3. 初始化 rum 框架
|
SQL 开发框架 安全
【Gin】初识Gin框架,模板基本语法
1.Gin介绍 Gin 是一个用 Go (Golang) 编写的 HTTP Web 框架。 它具有类似 Martini 的 API,但性能比 Martini 快 40 倍。如果你需要极好的性能,使用 Gin 吧
443 1
【Gin】初识Gin框架,模板基本语法
|
中间件
Gin 路由添加流程
Gin 路由添加流程
93 0
|
前端开发 JavaScript Go
【Gin】模板的高级用法
这样我们只需要在模板文件不需要转义的内容后面使用我们定义好的safe函数就可以了。 {{ . | safe }}
311 1
【Gin】模板的高级用法
Gin框架学习(九)
来这里学习gin框架,目标明确不迷茫。
123 0
Gin框架学习(九)