标签: go-templates

在Go模板范围循环中,是在每次迭代时在循环重置之外声明的变量吗?

我正在尝试使用在Go模板范围循环外声明的变量来查看上一篇文章是否与当前帖子发生在同一天.这是一个简化的例子.

.Posts一组帖子结构在哪里,每个结构都有一个.Content和一个.Date.

{{ $prevDate := "" }}
{{ range $post := .Posts }}
    {{ if ne $prevDate $post.Date }}
        <div class="post-date">Posts dated: {{ $post.Date }}</div>
    {{ end }}
    <div class="post-content">{{ $post.Content }}</div>
    {{ $prevDate := $post.Date }}
{{ end }}
Run Code Online (Sandbox Code Playgroud)

问题是$prevDate似乎""在循环的每次迭代开始时重置为.

任何人都可以帮助我理解为什么$prevDate在每次迭代时重置值,并且可能建议一种方法来完成我在这里尝试做的事情?

go go-templates

6
推荐指数
1
解决办法
1759
查看次数

Golang从文件中嵌入了html

如果我有这样的HTML文件,我怎么能在Golang中做:

<html>
  <head lang="en">

  </head>
  <body>
    <header>{{.Header}}</header>
    <div class="panel panel-default">

    </div>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

我想将一部分代码嵌入到其他文件的头文件标签中,如下所示:

<div id="logo"></div><div id="motto"></div>
Run Code Online (Sandbox Code Playgroud)

我的尝试:

header, _ := template.ParseFiles("header.html")
c := Content{Header: ""}
header.Execute(c.Header, nil)

index := template.Must(template.ParseFiles("index.html"))
index.Execute(w, c)
Run Code Online (Sandbox Code Playgroud)

templates go go-templates

6
推荐指数
1
解决办法
5374
查看次数

如何在Go模板中替换字符串?

我用的是"text/template"模块.

我有像这样的结构来解析Blogger中的XML

type Media struct {
    ThumbnailUrl string `xml:"url,attr"`
}


type Entry struct {
    ID string `xml:"id"`
    Published Date `xml:"published"`
    Updated Date `xml:"updated"`
    Draft Draft `xml:"control>draft"`
    Title string `xml:"title"`
    Content string `xml:"content"`
    Tags Tags `xml:"category"`
    Author Author `xml:"author"`
    Media Media `xml:"thumbnail"`
    Extra string
}
Run Code Online (Sandbox Code Playgroud)

然后我像这样创建Go Template

[image]
    src = "{{ replace .Media.ThumbnailUrl 's72-c' 's1600' }}"
    link = ""
    thumblink = "{{ .Media.ThumbnailUrl }}"
    alt = ""
    title = ""
    author = ""
    license = ""
    licenseLink = "" …
Run Code Online (Sandbox Code Playgroud)

go go-templates

6
推荐指数
1
解决办法
6356
查看次数

如何将当前年份添加到Go模板?

在Go模板中,您可以检索如下字段:

template.Parse("<html><body>{{ .Title }}</body></html>")
template.Execute(w, myObject)
Run Code Online (Sandbox Code Playgroud)

您如何"内联"当前的UTC年份?我想做这样的事情:

template.Parse("<html><body>The current year is {{time.Time.Now().UTC().Year()}}</body></html>")
Run Code Online (Sandbox Code Playgroud)

但它返回错误:

恐慌:模板:功能"时间"未定义

go go-templates

6
推荐指数
1
解决办法
2472
查看次数

迭代 Go 地图获取索引

为了在模板中使用revel'seven关键字,我想在使用range. 有什么办法吗?我的地图具有以下结构:

map[string][]string
Run Code Online (Sandbox Code Playgroud)

dictionary go go-templates revel

6
推荐指数
2
解决办法
1万
查看次数

我可以使用什么kubectl命令来获取按特定字段排序的事件,并仅打印事件的特定详细信息?

我只需打印Kubernetes Events的特定字段,按特定字段排序.

这是为了帮助我收集有关我的命名空间的遥测和分析

我怎么能这样做?

go-templates kubernetes kubectl

6
推荐指数
4
解决办法
4505
查看次数

使用go-templates内的范围检测数组中的最后一项

该程序输出简单

1,4,2,

但我想打印

1,4,2。

如您所见,逗号在数组的每个项目之后打印。

package main

import "os"
import "text/template"

func main() {
    params := map[string]interface{}{
        "items": [3]int{1, 4, 2},
    }
    tpl := "{{range $i, $el := .items}}{{$el}},{{end}}"
    lister, _ := template.New("foo").Parse(tpl)
    lister.Execute(os.Stdout, params)
}
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以更改,{{range $i, $el := .items}}{{$el}},{{end}}并确保最后一项将打印“。”。代替 ”,”

go go-templates

6
推荐指数
2
解决办法
1121
查看次数

如何将动态参数传递给运行作业的头盔图

我想允许我们的开发人员将动态参数传递给头盔模板(Kubernetes作业)。目前,我在舵模板中的参数有些静态(除了某些值),看起来像这样

      Args:
        --arg1
        value1
        --arg2
        value2
        --sql-cmd
        select * from db
Run Code Online (Sandbox Code Playgroud)

如果使用不带Kubernetes的docker容器运行任务,我将传递如下参数:

docker run my-image --arg1 value1 --arg2 value2 --sql-cmd "select * from db"
Run Code Online (Sandbox Code Playgroud)

是否有任何方法可以将舵图中的参数模板化,从而可以将任意数量的参数传递给模板。

例如。

cat values.yaml
...
arguments: --arg1 value1 --arg2 value2 --sql-cmd "select * from db"
...
Run Code Online (Sandbox Code Playgroud)

要么

cat values.yaml
...
arguments: --arg3 value3
...
Run Code Online (Sandbox Code Playgroud)

我尝试了几种方法,但没有成功。这是一个例子:

     Args:          
      {{  range .Values.arguments }}
        {{ . }}
      {{ end }}
Run Code Online (Sandbox Code Playgroud)

go-templates kubernetes kubernetes-helm

6
推荐指数
2
解决办法
4429
查看次数

Helm 模板 - 如何在数组中使用“如果存在至少一个”?

我试图将 values.yaml 中的 env vars 列表变成一个 secret.yaml 文件,其中包含“secret”类型的 envs 列表。这个想法是只在至少一种类型等于“秘密”时才创建这个秘密文件。

例如:

值.yaml

env:
  - name: PLAIN_TEXT_ENV_VAR1
    type: plain
    value: text value
  - name: PLAIN_TEXT_ENV_VAR2
    type: plain
    value: text value
  - name: TOP_SECRET_ENV_VAR_1
    type: secret
  - name: TOP_SECRET_ENV_VAR_2
    type: secret
  - name: TOP_SECRET_ENV_VAR_3
    type: secret
Run Code Online (Sandbox Code Playgroud)

生成的 secret.yaml

kind: Secret
metadata:
  name: test
data:
    TOP_SECRET_ENV_VAR_1: change_me
    TOP_SECRET_ENV_VAR_2: change_me
    TOP_SECRET_ENV_VAR_3: change_me
Run Code Online (Sandbox Code Playgroud)

我已经尝试使用范围迭代、布尔变量和 if 语句来创建一些流控制,但是在我将它更改为另一个值后,go 模板似乎忽略了我的 ifs。现在我的秘密模板如下所示。

{{ $flowcontrol := true -}}
{{ if $flowcontrol -}}
{{ range $env := $.Values.env -}}
{{ if …
Run Code Online (Sandbox Code Playgroud)

go-templates kubernetes-helm

6
推荐指数
1
解决办法
2万
查看次数

是什么导致 Helm 图表模板抛出“意外的 EOF”?

我正在尝试将入口添加到我的 nginx 容器中。

以下入口模板给我“解析错误(<>/ingress.yaml:71:意外的 EOF)”。我尝试标记可能丢失的结束语句,但即使在文件末尾添加任意结束也无法修复它。我不知道是什么原因导致这个 EOF。

所以问题是一般性的:是什么导致文件中出现“意外的 EOF”?

{{- if .Values.web.ingress.enabled }}

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: {{ .Release.Name }}-proxy-ingress
  labels:
    tier: intelowl
    component: proxy
    release: {{ .Release.Name }}
    chart: {{ .Chart.Name }}
    heritage: {{ .Release.Service }}
{{- with .Values.labels }}
{{ toYaml . | indent 4 }}
{{- end }} # {{- with .Values.labels }}

{{- if .Values.web.ingress.annotations }}
  annotations:
{{- with .Values.web.ingress.annotations }}
{{ toYaml . | indent 4 }}
{{- end }} # {{- with .Values.web.ingress.annotations …
Run Code Online (Sandbox Code Playgroud)

go-templates kubernetes kubernetes-helm

6
推荐指数
1
解决办法
2万
查看次数