【基于GO的Web开发8】gin框架模板渲染

发布时间:2026/8/25 3:14:43

【基于GO的Web开发8】gin框架模板渲染
一、基础概念gin.Htype H map[string]interface{}是 Gin 封装的快捷 map 类型用来给 HTML 模板传递数据。HTML 渲染三步骤模板解析 → 路由接收请求 → c.HTML () 渲染返回页面解析模板LoadHTMLGlob()/LoadHTMLFiles()渲染页面c.HTML(状态码, 模板名, 数据)二、两种模板加载方式方式 1LoadHTMLFiles () 加载单个 / 指定模板适合少量模板需要把每一个模板文件路径都写出来package main import ( net/http github.com/gin-gonic/gin ) func main() { r : gin.Default() //解析单个模板文件 r.LoadHTMLFiles(templates/index.tmpl) r.GET(/index, func(c *gin.Context) { //渲染页面 c.HTML(http.StatusOK, index.tmpl, gin.H{ title: liwenzhuo.com, }) }) r.Run(:9090) }⚠️易错坑文件夹名拼写templates不要写成temlates方式 2LoadHTMLGlob () 通配符批量加载【推荐】//加载templates文件夹下第一层所有模板 r.LoadHTMLGlob(templates/*) //递归加载templates下所有子文件夹内的模板多级目录 r.LoadHTMLGlob(templates/**/*)三、HTML 模板文件示例 index.tmpl!DOCTYPE html html langen head meta charsetUTF-8 meta nameviewport contentwidthdevice-width, initial-scale1.0 meta http-equivX-UA-Compatible contentieedge titleposts/index/title /head body {{.title}} /body /html{{.title}}接收后端gin.H{title:xxx}传递过来的数据四、多级目录、多个模板渲染目录结构templates ├─posts │ └─index.tmpl └─users └─index.tmpl重点给模板命名 define子目录下同名文件必须用{{define 模板名}}标记模板名称否则冲突 posts/index.tmpl{{define posts/index.tmpl}} !DOCTYPE html html body {{.title}} /body /html {{end}}users/index.tmpl{{define users/index.tmpl}} !DOCTYPE html html body {{.title}} /body /html {{end}}Go 后端代码package main import ( net/http github.com/gin-gonic/gin ) func main() { r : gin.Default() //递归加载所有模板 r.LoadHTMLGlob(templates/**/*) r.GET(/posts/index, func(c *gin.Context) { c.HTML(http.StatusOK, posts/index.tmpl, gin.H{ title: liwenzhuo.com, }) }) r.GET(/users/index, func(c *gin.Context) { c.HTML(http.StatusOK, users/index.tmpl, gin.H{ title: liwenzhuo.com, }) }) r.Run(:9090) }五、自定义模板函数场景原生 Go 模板默认会转义 HTML 内容想要关闭转义自定义safe函数完整示例package main import ( html/template net/http github.com/gin-gonic/gin ) func main() { r : gin.Default() //❗必须在加载模板之前注册自定义函数 r.SetFuncMap(template.FuncMap{ safe: func(str string) template.HTML { return template.HTML(str) }, }) r.LoadHTMLGlob(templates/*) r.GET(/index, func(c *gin.Context) { c.HTML(http.StatusOK, index.tmpl, gin.H{ title: h1我是html标题/h1, }) }) r.Run(:9090) }模板中调用函数管道符|body {{.title | safe}} /body六、静态文件处理css、js、图片r.Static(路由前缀, 文件存放目录)//访问 /static/xxx.css 就会去找 ./statics文件夹下的资源 r.Static(/static, ./statics)目录示例statics ├─css │ └─style.css └─js └─main.jshtml 引入link relstylesheet href/static/css/style.css七、拓展知识点Gin原生不支持 block 模板继承如果需要模板继承布局使用第三方库multitemplate加载顺序先 SetFuncMap → 再 LoadHTMLGlob顺序颠倒自定义函数失效

相关新闻

WisQuery 一套开箱即用、可 Docker 一键部署的 智能问数 + 知识库 + 智能问答 一体化平台

WisQuery 一套开箱即用、可 Docker 一键部署的 智能问数 + 知识库 + 智能问答 一体化平台

2026/8/25 3:14:43

项目地址:https://gitee.com/careshow/wis-query.git (仅供学习参考!!!) 一套开箱即用、可 Docker 一键部署的 智能问数 知识库 智能问答 一体化平台。后端 FastAPI PostgreSQL(pgvector&am…

山特SK2000 UPS实战指南:从原理到配置,保障小型服务器与NAS不断电

山特SK2000 UPS实战指南:从原理到配置,保障小型服务器与NAS不断电

2026/8/25 3:14:43

最近在帮朋友的公司搭建小型服务器和监控系统时,遇到了一个很实际的问题:如何保障核心设备在市电不稳定或突然断电时,能够安全、平稳地运行或关机?尤其是在家庭办公室、小型工作室或者对数据连续性有基本要求的场景下,…

2026年AI内容安全服务选型指南:腾讯云TMS、阿里云绿网、华为云Moderation深度对比

2026年AI内容安全服务选型指南:腾讯云TMS、阿里云绿网、华为云Moderation深度对比

2026/8/25 3:14:43

1. 项目概述:为什么我们需要一份2026年的选型指南? 做内容平台也好,做社区应用也罢,甚至是企业内部的知识库、OA系统,只要涉及到用户自主生成文本的地方,“内容安全”这四个字就是悬在头顶的达摩克利斯之剑…

AI音频审核系统实战:从人工到人机协同的效率革命

AI音频审核系统实战:从人工到人机协同的效率革命

2026/8/25 5:24:49

1. 项目概述:当音频审核遇上AI,一场效率革命最近和几个做内容平台的朋友聊天,大家不约而同地提到了同一个痛点:音频审核。无论是UGC播客、语音社交房,还是在线教育课程,只要涉及用户上传的音频内容&#xf…

基于Python Flask的全栈音乐平台毕业设计:从环境搭建到功能实现

基于Python Flask的全栈音乐平台毕业设计:从环境搭建到功能实现

2026/8/25 5:24:49

1. 先搞清楚这个“音乐平台”毕设到底要做什么如果你正在为计算机专业的毕业设计发愁,尤其是想找一个前后端完整、功能闭环、有实际交互、技术栈主流的项目,那么一个基于 Python Flask 的全栈音乐平台,确实是个不错的选择。它不像一个简单的增…

UE5物理布光全流程:从Lumen全局光照到电影级场景灯光实战

UE5物理布光全流程:从Lumen全局光照到电影级场景灯光实战

2026/8/25 5:24:49

为什么你的UE5场景看起来总是“假”?为什么别人的作品能呈现出电影级的真实感,而你的灯光却像廉价的游戏贴图?问题的核心,往往不在于模型有多精细,而在于你如何理解并驾驭“光”。在虚幻引擎5(UE5&#xff…

HoRain云--LaTeX 数学公式进阶

HoRain云--LaTeX 数学公式进阶

2026/8/25 5:24:49

它们全部来自 amsmath 宏包——这也是为什么所有数学文档的导言区都该有一行 \usepackage{amsmath}。矩阵:matrix 家族矩阵用环境表示:& 分隔列,\\ 换行,环境名决定外层的括号样式。环境外层样式典型用途matrix无括号拼接数据…

毕业设计避坑指南:SpringBoot与深度学习微服务架构下的智能招聘匹配系统实践

毕业设计避坑指南:SpringBoot与深度学习微服务架构下的智能招聘匹配系统实践

2026/8/25 5:24:49

最近在帮几个做毕业设计的同学看项目,发现一个挺有意思的现象:很多人拿到“基于深度学习的智能匹配在线招聘管理系统”这类题目,第一反应是去搜源码、找框架、拼功能,恨不得一周内就把所有模块都搭起来。但真正跑起来之后&#xf…

实战指南:将OpenClaw智能体接入Telegram,打造对话式AI助手

实战指南:将OpenClaw智能体接入Telegram,打造对话式AI助手

2026/8/25 5:14:48

1. 项目概述:当OpenClaw遇见Telegram最近在折腾一个挺有意思的事儿,把OpenClaw这个智能体框架接入了Telegram。简单来说,就是让你在Telegram里,能像跟一个真人助手聊天一样,指挥OpenClaw去完成各种任务,比如…

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

2026/8/24 19:53:32

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

2026/8/24 19:56:07

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

2026/8/24 21:16:09

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

三步把QQ空间历史说说导出到本地:GetQzonehistory 极简指南

三步把QQ空间历史说说导出到本地:GetQzonehistory 极简指南

2026/8/25 0:04:34

三步把QQ空间历史说说导出到本地:GetQzonehistory 极简指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory Meta Description:GetQzonehistory 是一个QQ空间历史说…

洛谷 P7912:[CSP-J 2021 T4] 小熊的果篮 ← 双向链表

洛谷 P7912:[CSP-J 2021 T4] 小熊的果篮 ← 双向链表

2026/8/25 0:04:35

【题目来源】 https://www.luogu.com.cn/problem/P7912 【题目描述】 小熊的水果店里摆放着一排 n 个水果。每个水果只可能是苹果或桔子,从左到右依次用正整数 1,2,…,n 编号。连续排在一起的同一种水果称为一个“块”。小熊要把这一排水果挑到若干个果篮里&#x…

Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG

Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG

2026/8/25 0:04:35

Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG 【免费下载链接】transformers.js State-of-the-art Machine Learning for the web. Run 🤗 Transformers directly in your browser, with no need for a server! 项目地址: https:/…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/22 2:02:26

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/22 4:13:47

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/22 1:32:34

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…