
详细描述应该是 怎么定义公共的全局模板变量,比如全局的 webtitle 、seotitle 等
如
router := gin.Default() router.use(unc (ctx *gin.Context) { // if user.isLogged() // 怎么才能设置一个变量或值,让模板中可以读到 // endif }) 如 fiber 可以这样:
app.Use(func(ctx *fiber.Ctx) error { _ = ctx.Bind(fiber.Map{ "t": time.Now().UnixNano(), }) return ctx.Next() }) app.Get("/", func(ctx *fiber.Ctx) error { return ctx.Render("tmpl_name", fiber.Map{ }) }) // 模板中可以 {{ .t }} 得到当前的时间戳 1 Carseason 2022 年 5 月 10 日 via Android ctx.Set() |
3 Carseason 2022 年 5 月 11 日 via Android 再用 ctx.HTML 写入到模板变量里 |
4 xcsoft 2022 年 5 月 11 日 中间件中 通过 c.Set("test","testvalue") 设置参数 在 ``` go app.Get("/", func (c *gin.Context){ test := c.GetString("test") }) ``` 这样取出参数, |
6 Maboroshii 2022 年 5 月 11 日 via Android 明天上班了告诉你 我好像做过这个 |
7 JohnH 2022 年 5 月 11 日 [Golang Gin Middleware pass Data to Template]( https://stackoverflow.com/questions/71229454/golang-gin-middleware-pass-data-to-template) google:gin template middleware |
9 llys 2022 年 5 月 20 日 @Maboroshii 9 天过去了... |
10 dzdh OP @llys 本来想实现 gin 的 render 接口自己实现个 render 把 ctx 里的内容拿出来,但是 gin.render 并没有在 render 阶段提供 ctx 。。 |
11 Maboroshii 2022 年 5 月 20 日 via Android @llys 喔我忘啦哈哈哈哈,明天有空看看 |
12 Maboroshii 2022 年 5 月 21 日 我们用的 pongo2 模板, 可以在模板内使用全局信息 pongo2Render, _ := pongo2gin.NewRenderer("public/views") pongo2Render.TplSet.Globals = pongo2.Context{ "foo": "bar" } |
13 dzdh OP @Maboroshii 额。也是个招,压根儿就不用 gin 的模板。哈哈哈哈哈哈哈。 有个新问题,在并发请求中动态设置值会乱吗?详细咋用的呢? 比如 gin.Use(func() { other_tmpl.Context('x', user.id). 如果两个用户的并发请求怎么控制呢? |