如何在Go中定义视图模型

时间:2017-05-24 14:54:48

标签: templates go view model

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

type AdminView struct {
    PageTitle string
    UserName string
    UserType string
    Templates []Template
    ...
    OtherAttr Other
}

帮助我更好地组织模板和DTO,但到目前为止还没有很好地工作。我想要实现的是这样的:

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)
}

我想知道我是否正在使用上述方法在渲染View时引入更多抽象。我想知道人们如何在现实世界中使用复杂数据渲染复杂视图。

提前致谢。

1 个答案:

答案 0 :(得分:2)

你几乎正常。请记住,Go不是面向对象的语言,因此继承(您正在尝试做的事情)并不是一种非常常见的模式。

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

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