go template 模板使用

苏州运维开发 · · 5582 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

在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/,本篇文章如果有错误处还望批评指正。


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:苏州运维开发

查看原文:go template 模板使用

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

5582 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传