gpt4 book ai didi

go - 如何将 web 模板变量设置为动态 html 和 golang 代码?

转载 作者:数据小太阳 更新时间:2023-10-29 03:08:54 29 4
gpt4 key购买 nike

我在 golang 上有两个网页,我想将这个页面代码嵌入到 {{.content}} 变量(在 templates/main.html 中定义),根据即将到来的请求动态变化。

例如,如果客人进入用户注册页面,我希望 {{.content}} 变量将是用户注册代码,否则是用户配置文件代码。

templates/userregister.html页面代码;

{{ define "userregister" }}
...
{{.specialmessage}}
...
{{ end }}

templates/userprofile.html页面代码;

{{ define "userprofile" }}
...
{{.specialmessage}}
...
{{ end }}

模板/main.html;

{{ define "main" }}
<!DOCTYPE html>
<html lang="tr">
{{ template "head" . }}
<body>
<div class="container-fluid">
{{ template "header" . }}
<div class="row">
<nav class="col-12 col-md-2 p-0">
{{ template "leftmenu" . }}
</nav>
<div class="container-fluid col-12 col-md-10">


{{.content}}


</div>
</div>
{{ template "footer" . }}
</div>
</body>
</html>
{{ end }}

用户注册页面 Controller ;

func PgUserRegister(c *gin.Context) {
c.HTML(http.StatusOK,"main", gin.H{
"pgETitle": "User Register page",
"specialmessage": "You are on the userregister page.",

"content": template.ParseFiles("userregister.html"),
})
}

用户资料页面 Controller ;

func PgUserProfile(c *gin.Context) {
c.HTML(http.StatusOK,"main", gin.H{
"pgETitle": "User Profile",
"specialmessage": "You are on the userprofile page.",

"content": template.ParseFiles("userprofile.html"),
})
}

最佳答案

在启动路由器时解析所有模板。

router.LoadHTMLFiles("templates/main.html", "templates/userregister.html", "templates/userprofile.html")

然后在您的处理程序中向 gin.H{ ... } 表达式添加一个 bool 变量,例如"isLoggedIn",然后在您的主模板中使用 if-else action连同 template 操作。

{{ if .isLoggedIn }}
{{ template "userprofile" . }}
{{ else }}
{{ template "userregister" . }}
{{ end }}

关于go - 如何将 web 模板变量设置为动态 html 和 golang 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55892159/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com