在beego中默认开启自动渲染,view目录中的模板文件会自动解析;用户无需手动的调用渲染输出模板,beego 会自动的在调用完相应的 method 方法之后调用 Render 函数;而模板中的数据是通过在 Controller 中 this.Data 获取的,所以如果你想在模板中获取内容 {{.Content}} ,那么你需要在 Controller 中如下设置:
this.Data["key"] = interface{}
即“key”对应的数据可以设置成任何数据结构。
在最近的项目中需要解析的数据后端代码如下:
type k8sNode struct {
Name string
Ip string
Status string
Cpu int64
Memory int64
JoinDate string
System string
DockerVersion string
Pods []string
}
func (c *BaseController) GetNode() {
nodes, err := clientset.CoreV1().Nodes().List(metav1.ListOptions{})
if err != nil {
fmt.Println("err")
}
nodeInformations := []k8sNode{}
for _,node := range nodes.Items{
cpu,_ := node.Status.Allocatable.Cpu().AsInt64()
memory,_ := node.Status.Allocatable.Memory().AsInt64()
memory = memory / 1024 / 1024 / 1024
nodeInformation := k8sNode{
Name: node.Name,
Ip: node.Status.Addresses[0].Address,
Status: string(node.Status.Conditions[len(node.Status.Conditions)-1].Type),
Cpu: cpu,
Memory: memory,
JoinDate: node.CreationTimestamp.Format("2006-01-02"),
System: node.Status.NodeInfo.OSImage,
DockerVersion: node.Status.NodeInfo.ContainerRuntimeVersion,
}
nodeInformations = append(nodeInformations,nodeInformation)
}
c.Data["k8snode"] = nodeInformations
}
前端模板文件代码片段如下:
{{ range $node := .k8snode }}
<div class="col-lg-3 col-xs-6">
<!-- small box -->
<div class="small-box bg-aqua">
<div class="inner">
<h4 >{{ $node.Name }}</h4>
<hr >
<p class="node-p">HostIp:{{ $node.Ip }}</p>
<p class="node-p">状态:{{ $node.Status }}</p>
<p class="node-p">cpu:{{ $node.Cpu }}核</p>
<p class="node-p">内存:{{ $node.Memory }}G</p>
<p class="node-p">创建:{{ $node.JoinDate }}</p>
<p class="node-p">系统:{{ $node.System }}</p>
<p class="node-p">docker:{{ $node.DockerVersion }}</p>
<p class="node-p">pods:cloud-erp,cloud-zipkin</p>
</div>
<div class="icon" >
<i class="ion ion-clipboard"></i>
</div>
<a href="#" class="small-box-footer">More info <i class="fa fa-arrow-circle-right"></i></a>
</div>
</div>
{{ end }}
==================================================================
有关golang的template的所有基本语法,请参照goLang的官方文档,地址:https://golang.org/doc/,本篇文章如果有错误处还望批评指正。
有疑问加站长微信联系(非本文作者)