Go语言 如何访问模板范围内的会话变量?

k10s72fa  于 2023-01-22  发布在  Go
关注(0)|答案(2)|浏览(107)

我想添加一个Edit按钮,只对版主显示:

{{range $n := .articles}}
   <p>{{$n.Content}} </p>
   {{ if .is_mod}}
      <button> Edit </button>
   {{end}}
{{end }}

我已经在会话中将is_mod设置为布尔变量,并将其传递给模板。然而,它不是Article结构体中的字段,因此,我得到以下错误:
在:is_mod执行的“内容”<.is_mod>不是结构类型model.Article的字段。
一个显而易见的解决方案是在控制器中创建一个新的struct,其中包括一个IsMod字段,并将其传递给模板,但这是混乱和低效的,所以我宁愿避免它,如果可能的话,并寻找一个更优雅的解决方案。

dddzy1tm

dddzy1tm1#

你需要将会话变量传递给模板。我没有尝试过,但是你可以尝试类似这样的操作:

c.HMTL(http.StatusOK, "template_name", gin.H {
  "articles": articles,
  "is_mod": is_mod,
})

以上语法适用于gin-gonic/gin框架。

yh2wf1be

yh2wf1be2#

这对我有用。

c.HTML(http.StatusOK, "index.html", gin.H {
  "posts": posts,
  "some_data": "Home page posts",
})

相关问题