使用Golang的html/template可安全渲染动态数据,通过定义模板文件、准备可导出字段的数据结构,并调用Execute方法注入数据,自动转义防止XSS。

使用Golang的
html/template
包向网页动态渲染数据,核心是定义模板文件、准备数据结构,并通过
Execute
方法将数据注入HTML。整个过程安全且防止XSS攻击,因为模板会自动转义特殊字符。
定义HTML模板文件
在项目中创建一个HTML文件,比如
index.html
,放在
templates/
目录下:
用户信息 欢迎,{{.Name}}!
你今年 {{.Age}} 岁。
- {{range .Hobbies}}
- {{.}} {{end}}
这里
{{.Name}}
、
{{.Age}}
和
{{range .Hobbies}}
是模板语法,用于插入数据。
立即学习“go语言免费学习笔记(深入)”;
准备数据结构并渲染
在Go代码中,使用
template.ParseFiles
加载模板,然后通过
Execute
传入数据:
package mainimport ( "html/template" "log" "net/http")type User struct { Name string Age int Hobbies []string}func handler(w http.ResponseWriter, r *http.Request) { // 定义数据 user := User{ Name: "张三", Age: 25, Hobbies: []string{"读书", "游泳", "编程"}, } // 解析模板文件 tmpl, err := template.ParseFiles("templates/index.html") if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } // 执行模板,将数据写入响应 err = tmpl.Execute(w, user) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) }}func main() { http.HandleFunc("/", handler) log.Println("服务器启动在 http://localhost:8080") log.Fatal(http.ListenAndServe(":8080", nil))}
启动服务后访问
http://localhost:8080
,页面会显示填充后的用户信息。
处理复杂数据与模板复用
支持嵌套结构、map、条件判断等。例如模板中使用
{{if .IsAdult}}...{{end}}
:
{{if ge .Age 18}} 你是成年人。
{{else}} 你还未成年。
{{end}}
也可以使用
template.ParseGlob
加载多个模板,或通过
{{template "header"}}
实现布局复用。
基本上就这些。只要数据结构和模板字段匹配,
html/template
就能安全地渲染动态内容。注意字段必须是可导出的(首字母大写),否则无法访问。不复杂但容易忽略。
以上就是如何用Golang的html/template包向网页动态渲染数据的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1401956.html
微信扫一扫
支付宝扫一扫