Templates 如何在Go中定义视图模型

Templates 如何在Go中定义视图模型,templates,go,view,model,Templates,Go,View,Model,我想为视图模型定义一个结构,如下所示: type AdminView struct { PageTitle string UserName string UserType string Templates []Template ... OtherAttr Other } 帮助我更好地组织模板和数据,但到目前为止效果不太好。我想要实现的是这样的目标: func adminViewHandler (w http.ResponseWriter, r *

我想为视图模型定义一个结构,如下所示:

type AdminView struct {
    PageTitle string
    UserName string
    UserType string
    Templates []Template
    ...
    OtherAttr Other
}
帮助我更好地组织模板和数据,但到目前为止效果不太好。我想要实现的是这样的目标:

func adminViewHandler (w http.ResponseWriter, r *http.Request) {
    data := processRequestData (r)  // process request form data
    view := AdminView {}
    // then assign values to view
    view.render(w) // similar to tmpl.Exec(w, data)
}
我想知道在使用上述方法渲染视图时引入更多抽象是否正确。我也想知道人们在现实世界中如何用复杂的数据呈现复杂的视图


提前谢谢。

你差不多走上正轨了。记住,Go不是一种面向对象的语言,所以继承(您正在尝试做的)不是一种非常常见的模式

相反,您要做的是使用样板,并将视图模型传递到样板中:

view := AdminView{}
...
tmpl.Exec(w, view)

你几乎走上正轨了。记住,Go不是一种面向对象的语言,所以继承(您正在尝试做的)不是一种非常常见的模式

相反,您要做的是使用样板,并将视图模型传递到样板中:

view := AdminView{}
...
tmpl.Exec(w, view)
你一次只能问一个问题。第一个问题过于宽泛,而且主要是基于观点,所以我删除了这一部分。还有,你应该一次只问一个问题。第一个问题过于宽泛,而且主要是基于观点,所以我删除了这一部分。另见。