gpt4 book ai didi

go - 如何将结构呈现为html模板?

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

我要用数据渲染 html,当渲染时,我不知道如何渲染其他文件返回的结构以在 Controller 上渲染,

代码:

packages controller

type Index struct {
Title string
Body string
}

func IndexController(w http.ResponseWriter , r *http.Request){

if r.Method == "POST"{

data := &Index{
Title: "Hello",
Body: "Welcome to the WebGo.",
}

ff := renders.Sample{Temppath:"templates/index.tmpl",Data:data}
ff.Render(w)

我的渲染包:

package renders

import (
"html/template"
"log"
"net/http"
)

type Sample struct {
Temppath string
Data struct{} ## i don't know how to use pass value of package controller to renders package ?
}

func (obj Sample) Render(w http.ResponseWriter) error {

var indexTemplate = template.Must(template.ParseFiles(obj.Temppath))
if err := indexTemplate.Execute(w, obj.Data); err != nil {
log.Println(err)
return err
}
return nil
}

html代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="/static/js/sample.js"></script>
<title>{{.Title}}</title>
<style>
body {
font-family: sans-serif;
}
h1 {
background: #ddd;
}
#sidebar {
float: right;
}
</style>
</head>
<body>
<h1>{{.Title}}</h1>
<div id="sidebar">
{{block "sidebar" .}}

<ul>

</ul>
{{end}}
</div>

{{block "content" .}}
<div id="content">
{{.Body}}
</div>
{{end}}
</body>

</html>

如何将 type Index struct 传递给渲染包以供使用 indexTemplate.Execute(w, obj.Data)

最佳答案

将结构体 Sample 中的字段 Data 声明为 interface{}:

type Sample struct {
Temppath string
Data interface{}
}

类型 Sample 也可以在其他 Controller 中用作将要传递给模板的任何数据的占位符。

关于go - 如何将结构呈现为html模板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39655389/

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