golang gin template模板渲染

news2024/11/14 12:56:18

1、根据值控制html元素显示隐藏

main.go

package main
import (
    "html/template"
    "net/http"
    "github.com/gin-gonic/gin"
)
func main() {
    r := gin.Default()
    r.SetFuncMap(template.FuncMap{
        "greaterThan": func(a, b int) bool {
            return a > b
        },
    })
    r.LoadHTMLGlob("templates/*")
    r.GET("/", func(c *gin.Context) {
        value := 10 // 示例值
        c.HTML(http.StatusOK, "index.html", gin.H{
            "Value": value,
        })
    })
    r.Run()
}

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Example</title>
</head>
<body>
    {{ if greaterThan .Value 5 }}
        <div>Value is greater than 5</div>
    {{ end }}
</body>
</html>

在 Go 的 Gin 框架中,可以使用条件语句在 HTML 模板中控制元素的渲染。假设你有一个变量 `value`,你想根据它的值来决定是否渲染某个 HTML 元素,可以这样做:

这段代码会在 `value` 大于 5 时显示指定的 `<div>` 元素。否则,该元素将不会被渲染。

显示结果

2、循环遍历列表生成html元素

main.go

package main

import (
	"github.com/gin-gonic/gin"
	"net/http"
)

type ListArr struct {
	Name string
	Age  int
}

func main() {
	r := gin.Default()
	l := [3]ListArr{
		{Name: "bob", Age: 20},
		{Name: "jack", Age: 30},
		{Name: "alice", Age: 32},
	}
	r.LoadHTMLGlob("templates/*")
	r.GET("/", func(c *gin.Context) {
		c.HTML(http.StatusOK, "index.html", gin.H{
			"List": l,
		})
	})
	r.Run(":9999")
}

templates/index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Example</title>
</head>
<body>
    {{range .List}}
        <p>my name is {{.Name}} my age is {{.Age}}</p>
    {{end}}
</body>
</html>

运行效果

3、一和二结合使用

main.go

package main

import (
	"github.com/gin-gonic/gin"
	"html/template"
	"net/http"
)

type ListArr struct {
	Name string
	Age  int
}

func main() {
	r := gin.Default()
	r.SetFuncMap(template.FuncMap{
		"greaterThan": func(a, b int) bool {
			return a > b
		},
	})
	l := [3]ListArr{
		{Name: "bob", Age: 20},
		{Name: "jack", Age: 30},
		{Name: "alice", Age: 32},
	}
	r.LoadHTMLGlob("templates/*")
	r.GET("/", func(c *gin.Context) {
		c.HTML(http.StatusOK, "index.html", gin.H{
			"List": l,
		})
	})
	r.Run(":9999")
}

templates/index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Example</title>
</head>
<body>
    {{range .List}}
        {{ if greaterThan .Age 25 }}
            <p>my name is {{.Name}} my age is {{.Age}} 年龄超过了25岁</p>
        {{ else }}
            <p>my name is {{.Name}} my age is {{.Age}} 年龄没有25岁</p>
        {{ end }}
    {{end}}
</body>
</html>

运行效果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2078941.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

jieba分词和RecursiveCharacterTextSplitter分词

目录 jieba 分词本身特点使用方法输出结果 RecursiveCharacterTextSplitter 分词本身特点使用方法 jieba 分词 jieba&#xff08;中文名&#xff1a;结巴&#xff09;是一个广泛使用的中文分词库&#xff0c;它支持三种分词模式&#xff1a; 精确模式&#xff1a;试图将句子最…

Spring:浅谈对SpringBean的认识

一、SpringBean的生命周期 1、实例化bean对象&#xff1a;通过反射的方式进行对象的创建&#xff0c;此时的创建只是在堆空间中申请空间&#xff0c;属性都是默认值。 2、设置对象属性&#xff1a;给对象中的属性进行值的设置工作。 3、检查Aware相关接口并设置相关依赖&#x…

【书生大模型实战营第三期 | 进阶岛第6关-MindSearch 快速部署】

学习心得&#xff1a;MindSearch 快速部署 摘要 本课程是关于如何将MindSearch部署到Github Codespace和Hugging Face Space的详细指南。通过学习本课程&#xff0c;我深入理解了MindSearch的部署流程&#xff0c;包括环境配置、API Key获取、后端和前端的启动&#xff0c;以及…

Unity | 性能标准分析工具图形API简介

目录 一、相关术语 1.物理页 2.PSS内存 3.Reserved Total 二、耗时推荐值 三、内存推荐值 四、分析工具 1.Profiler &#xff08;1&#xff09;Profiler各平台对比 &#xff08;2&#xff09;构建到目标平台 &#xff08;3&#xff09;Frame数量修改 &#xff08;4…

正则表达式分离文字和数字并且展示整数或者小数

1、完整示例 function formatFrequency(value) {// 匹配整数和浮点数return value.replace(/(\d(\.\d)?)/g, (match) > {const num parseFloat(match);return Number.isInteger(num) ? num : num.toString();});}// 测试用例const test1 "hhh1天3片";const t…

GitHub开源的网盘系统-Cloudreve

Cloudeve 项目地址 特性&#xff1a; ☁️ 支持本机、从机、七牛、阿里云 OSS、腾讯云 COS、又拍云、OneDrive (包括世纪互联版) 、S3兼容协议 作为存储端 &#x1f4e4; 上传/下载 支持客户端直传&#xff0c;支持下载限速 &#x1f4be; 可对接 Aria2 离线下载&#xff0c;可…

从“炫技”到“服务”,国产人形机器人“抢滩”未来产业赛道

图为2024世界机器人大会上展示的人形机器人。新华社记者 李欣 摄 正在北京举办的2024世界机器人大会上&#xff0c;27款人形机器人“争奇斗艳”&#xff0c;不仅参展规模创历届之最&#xff0c;还成为展会上当仁不让的“人气王”&#xff0c;几乎每个展台都围满了人。 人形机…

汽车DV与PV测试

技术的快速进步和消费者对高质量汽车的需求不断推动着汽车行业的发展。为了确保每一辆汽车在设计和生产过程中都能达到最高标准&#xff0c;DV&#xff08;Design Verification&#xff0c;设计验证&#xff09;和 PV&#xff08;Production Validation&#xff0c;生产验证&am…

VMware虚拟机IP地址频繁变化的解决方法?测试可用

问题&#xff1a; 在使用vmware时&#xff0c;虚拟机的IP总是变&#xff0c;每次操作都要重新获取一下ip&#xff0c;重新走一遍流程&#xff0c;比较繁琐。 原因&#xff1a; 虚拟机有默认的租用时间&#xff0c;到了租用时间就会更换IP. 解决方式&#xff1a; 打开VMwar…

LLM - GPT(Decoder Only) 类模型的 KV Cache 公式与原理 教程

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/141605718 免责声明&#xff1a;本文来源于个人知识与公开资料&#xff0c;仅用于学术交流&#xff0c;欢迎讨论&#xff0c;不支持转载。 在 GPT…

element+plus中导航菜单关于index报错

elementplus中导航菜单关于index报错 官方解释必须为string 修改后正常使用 而当动态插入的时候&#xff0c;需要使用:index&#xff0c;且需要写为&#xff1a; :index“String(index)” index是为dom加的属性&#xff08;是定值&#xff09;&#xff0c;而:index加的值相当…

Python开发工具:PyCharm

本文是 Python 系列教程第 2 篇&#xff0c;完整系列请查看 Python 专栏。 1 安装 官网下载地址https://www.jetbrains.com.cn/pycharm/&#xff0c;文件比较大&#xff08;约861MB&#xff09;请耐心等待 双击exe安装 安装成功后会有一个30天的试用期&#xff0c;激活教程见先…

Level3 — PART 4 机器学习算法 — 决策树

目录 引言 信息量 信息熵 案例 ID3 属性选择—信息增益 决策树生成 Python实现ID3 C4.5 属性选择—信息增益率 连续型属性 缺失值 剪枝 CART 分类树属性选择—基尼系数 回归树属性选择—方差 剪枝 Python实现CART CHAID GBRT 决策树对比 模拟题 CDA L…

GDB基础指令分类与汇总

前言 在图形化界面中&#xff0c;我们进行调试一般而言比较方便&#xff0c;举例如下&#xff1a; 不过有时候&#xff0c;我们在Linux下没有这样的图形界面&#xff0c;这时可以使用GDB调试器来帮我们完成上面的工作。 GDB基础指令分类与汇总 类别指令含义举例基本使用gcc pro…

源代码防泄密的途径有很多种,如何保护源代码呢

随着各行各业业务数据信息化发展&#xff0c;各类产品研发及设计等行业&#xff0c;都有关乎自身发展的核心数据&#xff0c;包括业务数据、代码数据、机密文档、用户数据等敏感信息&#xff0c;这些信息数据有以下共性&#xff1a; — 属于核心机密资料&#xff0c;万一泄密会…

【实践经验】端口被占用问题:listen tcp:bind:only one usage of each socket address

文章目录 一. 问题描述二. 分析1. 适用错误 三. 解决方法1. 打开控制台2. 查看端口的使用情况2.1 不知道端口号——查看所有运行的端口2.2 知道端口号 3. 查看使用进程的程序4. 杀死进程5. 验证端口是否释放 一. 问题描述 goland启动项目后报错&#xff1a;“listen tcp:bind:…

四、监控搭建-Prometheus-采集端批量部署

四、监控搭建-Prometheus-采集端批量部署 1、背景2、目标3、传承4、操作4.1、准备部署工具4.2、编制部署脚本4.3、服务端添加客户端 1、背景 在前三篇中我们搭建了Prometheus平台&#xff0c;采集端部署和配合图形化grafana部署&#xff0c;将Linux主机进行监控。基本完成了一…

day41.动态规划

一.动态规划 121.买卖股票的最佳时机I 思路: dp[i][1] 表示第i天不持有股票所得最多现金 dp[i][0] 表示第i天持有股票所得最多现金 相信有人和我有一样的疑惑&#xff0c;为什么dp【i】【0】的转移是dp【i-1】【0】,-price【i】&#xff0c;因为题目规定了只能进行一次买卖&…

Linux信号处理机制基础

什么是信号 信号在最早的UNIX系统中即被引入&#xff0c;已有30多年的历史&#xff0c;但只有很小的变化。信号是提供异步事件处理机制的软件中断。进程之间可以相互发送信号&#xff0c;这使信号成为一种进程间通信(Inter-ProcessCommunication,lPC)的基本手段 信号的名称与…

水控器数码管驱动方案

目录 方案1 方案2 总结 方案1 数码管驱动电路选用2片74HC595和外围电阻实现&#xff0c;如图1所示。74HC595的封装为S0-16(窄体)&#xff0c;芯片价格0.42&#xff0c;整个LED驱动电路成本约0.9元(不包含数码管)。 图1、74HC595驱动电路 方案2 为减少PCB板密度&#xff0c;数…