Gin渲染 HTML渲染

在 Gin 框架中,HTML 渲染是一个将数据和 HTML 模板结合,生成最终 HTML 页面的过程。Gin 框架提供了几种方式来实现 HTML 渲染:

  1. 使用 Go 的标准模板引擎: Gin 框架内置了对 Go 标准库 html/template 的支持。你可以创建 HTML 模板文件,然后在路由中使用 c.HTML() 方法来渲染这些模板。这种方式简单易用,适合快速开发。

  2. 使用 Gin 的 HTML 渲染方法: Gin 提供了 c.HTML() 方法,用于将模板名称、HTTP 状态码和数据映射传递给模板引擎,生成最终的 HTML 响应。这个方法接受三个参数:

    • http.StatusOK:HTTP 状态码,表示请求成功。
    • 模板名称:不包括扩展名的模板文件名。
    • gin.H:一个包含渲染模板所需数据的映射。
  3. 使用模板函数: Gin 的模板引擎支持使用模板函数,这些函数可以在模板中执行逻辑操作,如格式化日期、生成链接等。你可以在模板中使用这些函数来增强模板的功能。

  4. 使用布局模板: Gin 支持使用布局模板来实现页面的布局和内容分离。你可以创建一个基础的布局模板,然后在其他模板中使用 {{ yield }}{{ template "content" . }} 来包含实际的内容部分。这样可以实现页面结构的复用和一致性。

  5. 使用第三方模板引擎: 除了 Go 的标准模板引擎外,Gin 还支持使用第三方模板引擎,如 Pongo2、Handlebars、Amber 等。使用第三方模板引擎可以提供更多的功能和灵活性,但可能需要额外的配置和学习成本。

  6. 自定义模板渲染器: 如果你有特殊的需求,Gin 允许你自定义模板渲染器。你可以通过实现 Render 接口来创建自己的渲染器,并将其设置为 Gin 的模板渲染器。

  7. 流式渲染: 对于需要逐步发送内容到客户端的场景,Gin 支持流式渲染。你可以使用 c.Writer 来逐步写入 HTML 内容,这种方式适用于实时数据更新或长连接场景。

  8. 模板缓存: Gin 允许你配置模板缓存,以提高渲染性能。你可以使用 SetHTMLTemplate 方法来加载模板,并设置是否启用缓存。

通过这些方式,Gin 框架提供了灵活和强大的 HTML 渲染能力,可以满足不同场景和需求的 Web 开发。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
静态文件处理
当我们渲染的HTML文件中引用了静态文件时,我们只需要按照以下方式在渲染页面前调用gin.Static方法即可。

JSON渲染

在这里插入图片描述

代码演示了如何使用 Gin 框架来渲染 JSON 数据。下面是对代码的详细解释:

  1. 导入包:代码首先导入了 net/httpgithub.com/gin-gonic/gin 这两个包。net/http 是 Go 语言的标准库,用于处理 HTTP 请求和响应。gin 是一个高性能的 Go (Golang) Web 框架,用于快速开发 Web 应用和服务。

  2. 创建路由实例:使用 gin.Default() 创建了一个默认配置的 Gin 路由器实例 r

  3. 注释掉的代码块:这里有一个被注释掉的代码块,展示了两种使用 Gin 渲染 JSON 数据的方法:

    • 方法1:使用 map:创建一个 map[string]interface{} 类型的变量 data,然后使用 c.JSON() 方法将这个 map 序列化为 JSON 响应。
    • 方法2:使用 gin.Hgin.H 是 Gin 框架提供的快捷方式,用于创建一个 map[string]interface{} 类型的变量,然后同样使用 c.JSON() 方法将其序列化为 JSON 响应。
  4. 定义数据结构:定义了一个名为 msg 的结构体,包含 NameMessageAge 三个字段。Name 字段使用 json:"name" 标签来指定 JSON 序列化时的键名。

  5. 定义 JSON 路由:使用 r.GET("hh_json", ...) 定义了一个 GET 路由 "hh_json"。当这个路由被访问时,会执行传入的匿名函数。

  6. 创建数据实例并渲染 JSON:在路由处理函数中,创建了一个 msg 类型的实例 data,并使用 c.JSON() 方法将其序列化为 JSON 响应。http.StatusOK 表示响应的状态码是 200,表示请求成功。

  7. 启动服务器:最后,使用 r.Run(":9090") 启动服务器,监听 9090 端口。

JSON 渲染过程:

  • 当客户端发起对 "hh_json" 路由的 GET 请求时,Gin 框架会调用对应的处理函数。
  • 在处理函数中,创建了一个 msg 结构体的实例 data,并填充了相应的数据。
  • 使用 c.JSON() 方法,Gin 框架将 data 序列化为 JSON 格式的字符串。
  • 然后将序列化后的 JSON 字符串作为 HTTP 响应体返回给客户端,状态码为 200。

这样,客户端就可以接收到一个 JSON 格式的响应,内容如下:

{ "name": "小王子", "message": "hello world!", "age": 19 }

这就是 Gin 框架渲染 JSON 数据的基本流程。通过这种方式,你可以轻松地将 Go 的数据结构转换为 JSON 格式,并返回给客户端。

在这里插入图片描述

gin获取querystring
在这里插入图片描述

这段代码演示了如何使用 Gin 框架从 HTTP GET 请求的查询字符串(query string)中获取参数,并返回这些参数作为 JSON 响应。下面是对代码的详细解释:

  1. 导入包:代码首先导入了 net/httpgithub.com/gin-gonic/ginnet/http 是 Go 语言的标准库,用于处理 HTTP 请求和响应。gin 是一个高性能的 Go Web 框架。

  2. 创建路由实例:使用 gin.Default() 创建了一个默认配置的 Gin 路由器实例 r

  3. 定义 GET 路由:使用 r.GET("/web", ...) 定义了一个 GET 路由 "/web"。当这个路由被访问时,会执行传入的处理函数。

  4. 获取查询字符串参数

    • c.Query("query"):这是获取查询字符串参数的一种方式。c 是 *gin.Context 的实例,它包含了请求和响应的相关信息。Query 方法用于获取请求 URL 中的查询参数。例如,如果请求的 URL 是 /web?query=小王子&age=19c.Query("query") 将返回 "小王子"
    • c.Query("age"):同样的方式获取 "age" 参数的值。
  5. 其他获取查询字符串参数的方法

    • c.DefaultQuery("query", "somebody"):这是另一种获取查询字符串参数的方法,如果 "query" 参数存在,则返回其值;如果不存在,则返回默认值 "somebody"
    • c.GetQuery("query"):这个方法返回两个值,第一个是参数的值,第二个是一个布尔值,表示参数是否存在。如果参数不存在,可以设置一个默认值。
  6. 返回 JSON 响应:使用 c.JSON() 方法返回一个 JSON 格式的响应。这里,响应体是一个包含 "name""age" 两个字段的 gin.H 映射。

  7. 启动服务器:使用 r.Run(":9090") 启动服务器,监听 9090 端口。

gin获取from

在这里插入图片描述

这段代码演示了如何使用 Gin 框架处理 HTML 表单的 GET 和 POST 请求。代码中包括了如何加载 HTML 模板文件、显示登录页面、接收表单提交的数据,并将数据传递给另一个 HTML 模板。下面是对代码的详细解释:

  1. 导入包:导入了 net/httpgithub.com/gin-gonic/gin,这是 Gin 框架的包。

  2. 创建路由实例:使用 gin.Default() 创建了一个默认配置的 Gin 路由器实例 r

  3. 加载 HTML 模板文件:使用 r.LoadHTMLFiles() 方法加载了两个 HTML 文件,"./login.html""./index.html"。这些文件将用作模板来显示登录页面和登录后的页面。

  4. 定义 GET 请求路由:使用 r.GET("/login", ...) 定义了一个 GET 路由 "/login"。当这个路由被访问时,会执行传入的处理函数,显示登录页面。

  5. 显示登录页面:在 GET "/login" 路由的处理函数中,使用 c.HTML() 方法渲染 "login.html" 模板,状态码为 http.StatusOK,没有传递任何数据。

  6. 定义 POST 请求路由:使用 r.POST("/login", ...) 定义了一个 POST 路由 "/login"。这个路由用于处理表单提交的数据。

  7. 获取表单提交的数据

    • 使用 c.PostForm() 方法可以获取 POST 请求中表单的数据。如果字段存在,返回字段的值;如果字段不存在,返回空字符串。
    • 使用 c.DefaultPostForm() 方法可以获取 POST 请求中表单的数据,并提供一个默认值。如果字段存在,返回字段的值;如果字段不存在,返回提供的默认值。
    • 使用 c.GetPostForm() 方法可以获取 POST 请求中表单的数据,并返回一个布尔值表示字段是否存在。如果字段存在,返回字段的值和 true;如果字段不存在,返回默认值(这里是 "sb" 和 "**")和 false
  8. 渲染并显示提交后的页面:在 POST "/login" 路由的处理函数中,使用 c.HTML() 方法渲染 "index.html" 模板,状态码为 http.StatusOK,并将获取到的用户名和密码作为数据传递给模板。

  9. 启动服务器:使用 r.Run(":9090") 启动服务器,监听 9090 端口。

表单数据获取过程:

  • 当用户访问 /login 路由时,GET 请求会显示登录页面(login.html)。
  • 用户在登录页面填写表单并提交(通常是 POST 请求),表单数据会发送到 /login 路由的 POST 处理函数。
  • 在 POST 处理函数中,使用 c.PostForm() 或 c.GetPostForm() 方法获取表单中的数据。
  • 获取到的数据可以被用来进行验证、存储或显示在另一个页面上。
  • 最后,使用 c.HTML() 方法将用户重定向到另一个页面(index.html),并展示提交的用户名和密码。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


还有二种方法
在这里插入图片描述

期末放假自学Gin框架,希望我们可以一起学习!

Logo

助力广东及东莞地区开发者,代码托管、在线学习与竞赛、技术交流与分享、资源共享、职业发展,成为松山湖开发者首选的工作与学习平台

更多推荐