【Gin】Gin模板渲染

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介: 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月前
|
XML JSON Go
[gin]数据解析和绑定
[gin]数据解析和绑定
|
7月前
|
JSON 中间件 数据格式
Gin框架学习笔记(六)——gin中的日志使用
Gin框架学习笔记(六)——gin中的日志使用
311 0
|
7月前
|
JSON 中间件 API
Gin框架笔记(一) Gin框架的安装与Hello World
Gin框架笔记(一) Gin框架的安装与Hello World
239 0
|
7月前
|
JSON 前端开发 Java
|
7月前
|
前端开发 中间件 关系型数据库
|
8月前
|
存储 人工智能 Go
探索Gin框架:Golang使用Gin完成文件上传
探索Gin框架:Golang使用Gin完成文件上传
|
JSON 中间件 数据库连接
gin 框架中的 gin.Context
Context 是 gin 中最重要的部分。 例如,它允许我们在中间件之间传递变量、管理流程、验证请求的 JSON 并呈现 JSON 响应。Context 中封装了原生的 Go HTTP 请求和响应对象,同时还提供了一些方法,用于获取请求和响应的信息、设置响应头、设置响应状态码等操作。
764 0
gin 框架中的 gin.Context
|
SQL 开发框架 安全
【Gin】初识Gin框架,模板基本语法
1.Gin介绍 Gin 是一个用 Go (Golang) 编写的 HTTP Web 框架。 它具有类似 Martini 的 API,但性能比 Martini 快 40 倍。如果你需要极好的性能,使用 Gin 吧
637 1
【Gin】初识Gin框架,模板基本语法
|
前端开发 JavaScript Go
【Gin】模板的高级用法
这样我们只需要在模板文件不需要转义的内容后面使用我们定义好的safe函数就可以了。 {{ . | safe }}
404 1
【Gin】模板的高级用法
|
Go API
gin框架学习-快速安装gin
Gin 是一个用 Go (Golang) 编写的 Web 框架,由于 httprouter,它具有 martini 的 API,性能提高了 40 倍。具有高性能的优点。
172 0
gin框架学习-快速安装gin