golang template模板 template: xxx.html is an incomplete or empty template 解决方法

当我们在使用go语言中的template渲染多个模板文件时,如果我们使用的模板文件没有使用  ParseFiles方法进行解析就直接在模板里面使用 template进行嵌套的话就会出现 template: xxx.html is an incomplete or empty template 的异常。

解决方法: 在我们使用的时候先将可能用到的模板文件全部扫描后用ParseFiles进行解析以下即可。

tplFile = "index.html"
wr := bytes.NewBufferString("")
data:= make(map[string]interface{})


// 先获取所有待使用的模板文件列表
var tplFiles []string
filepath.WalkDir("templates", func(path string, d fs.DirEntry, err error) error {
	if !d.IsDir() && strings.HasSuffix(d.Name(), ".html") {
		// 非目录,且是.html结尾的文件加入到模板文件列表
		tplFiles = append(tplFiles, path)
	}
	return nil
})


t := template.New("") // 获取Template对象,注意这里名称 可为空,也可以指定名称

tpl, err := t.ParseFiles(tplFiles...) // 解析所有的模板文件

tpl.ExecuteTemplate(wr, tplFile, data) // 渲染指定的模板文件

//tpl.Execute(buf,data) // 渲染template.New("xxx.html")这里指定的模板文件

核心问题就是将所有可能用到的模板在模板渲染之前都解析以下。  tpl, err := t.ParseFiles(tplFiles...) // 解析所有的模板文件 

ParseFiles方法原型定义和说明

func (t *template.Template) ParseFiles(filenames ...string) (*template.Template, error)

ParseFiles parses the named files and associates the resulting templates with t. If an error occurs, parsing stops and the returned template is nil; otherwise it is t. There must be at least one file.

When parsing multiple files with the same name in different directories, the last one mentioned will be the one that results.

ParseFiles returns an error if t or any associated template has already been executed.

ParseFiles解析命名文件,并将生成的模板与t相关联。如果发生错误,解析将停止,返回的模板为nil;否则为t。必须至少有一个文件。

当解析不同目录中具有相同名称的多个文件时,最后提到的将是结果。

如果t或任何相关模板已经执行,ParseFiles将返回一个错误。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

马斯克宣布xAI将在8月份推出Grok-2大模型 预计年底推出Grok-3

在今年内,由特斯拉创始人马斯克创立的人工智能初创公司xAI将推出两款重要产品Grok-2和Grok-3。马斯克在社交平台上透露了这一消息,其中Grok-2预计在今年8月份面世,而Grok-3则计划于年底前亮相。 除此之外,马斯克还表示&#xff0c…

LLM指令微调Prompt的最佳实践(二):Prompt迭代优化

文章目录 1. 前言2. Prompt定义3. 迭代优化——以产品说明书举例3.1 产品说明书3.2 初始Prompt3.3 优化1: 添加长度限制3.4 优化2: 细节纠错3.5 优化3: 添加表格 4. 总结5. 参考 1. 前言 前情提要: 《LLM指令微调Prompt的最佳实践(一)&#…

初试总分409分,专业课143,西电821专业

非常感谢自己考研409分上岸西安电子科技大学,杭州研究院,专业课143分,跟的研梦,讲课以及答疑还是非常专业的。 821专业课课本总共有四本,都在官网考纲的参考书里写了,不过主要参考其中两本,一本…

Go GMP:并发编程实践

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

速锐得解码汽车以太网技术特点接口定义数据传输及应用

在当前的汽车工业中,随着技术的飞速发展,车载网络技术也在不断进步与更新。其中,具备以太网的车型已成为一个新兴趋势,这主要归功于车载以太网技术在车内带宽需求较高的系统上的应用,如高级驾驶辅助系统(AD…

RabbitMQ 消息传递

消息何去何从 mandatory和immediate是channel.basicPublish方法中的两个参数,他们都有当消息传递过程中不可达目的地时将消息返回给生产者的功能。RabbitMQ提供的备份交换器可以将未能被交换器路由的消息(没有绑定队列或者没有匹配的绑定)存…

java基于ssm+jsp 二手交易平台网站

1商家能模块 商家首页,在商家首页页面可以查看个人中心、商品分类管理、商品信息管理、订单信息管理、订单配送管理信息,如图1所示。 图1商家首页界面图 个人中心,用户通过个人中心可以查看用户名、用户姓名、头像、性别、手机号码、邮箱等信…

【C语言】register 关键字

在C语言中,register关键字用于提示编译器将变量尽量存储在CPU的寄存器中,而不是在内存中。这是为了提高访问速度,因为寄存器的访问速度比内存快得多。使用register关键字的变量通常是频繁使用的局部变量。 基本用法 void example() {regist…

第三届行为科学与应用心理学国际会议(BSAP2024)

会议日期:2024年9月13-15日 会议地点:马来西亚 吉隆坡 会议官网:https://www.iaast.cn/meet/home/Bx116rPM 出版检索:SSCI&SCI 【支持单位】 苏库尔IBA大学 苏库尔IBA大学.png 【大会主席】 【出版与检索】

​​​​​​​​​​​​​​Spark Standalone集群环境

目录 Spark Standalone集群环境 修改配置文件 【workers】 【spark-env.sh】 【配置spark应用日志】 【log4j.properties】 分发到其他机器 启动spark Standalone 启动方式1:集群启动和停止 启动方式2:单独启动和停止 连接集群 【spark-shel…

Librechat快速部署指南

引言 Github的开源免费程序里,Librechat作为AI对话使用,现阶段可谓是最佳选择,配合聚合API >>进行使用,能够保证成本最低,自由度最高,私密性最强,功能丰富且界面美观,如此以来…

压缩pdf文件大小,压缩pdf文件大小软件哪个好

在数字化时代,PDF文件因其卓越的跨平台兼容性和稳定性而成为工作与学习的好帮手。然而,当PDF文件体积过大时,传输和存储便成了一项挑战。别担心,本文将为你揭秘如何快速压缩PDF文件,让你的文档轻装上路! 压…

【有为己之心方能克己】

私欲会让人难受,为了自己舒服而去拔除,去除私欲小我,就可以为自己展现大我 “人不为己天诛地灭”,其实这句话不是自私自利的意思, 原意是:人如果不修为自己,不为那个真己而活,不活出…

智能井盖监测系统:守护城市安全的新防线

​ ​​在快速发展的现代都市中,井盖作为连接地上与地下世界的“隐形门”,其安全状态直接关系到市民的生命财产安全。随着物联网、大数据及人工智能技术的飞速发展,智能井盖监测系统的出现为解决传统井盖管理难题提供了创新方案&#xff0…

ROS2 分布式 及 ssh远程控制 和 上传文件夹

问题1. 多台计算机连接同一wifi后 ,运行ROS2的小乌龟案例,自己的计算机,无法控制其他电脑的小乌龟 按照正常的情况来说,ROS2是DDS的自发现通信机制,只要处在同一wifi网络中, A计算机执行启动小乌龟的命…

Android项目框架

Android项目基于Android Studio开发,Android Studio使用Gradle作为项目构建工具。新建工程后可以看到如图所示目录结构,将Android切成Project可以看到完整的Android工程目录结构,如图所示。 图1-2 Android项目目录结构 app目录是一个典型的…

Jmeter 入门指南:从零开始学习

JMeter 是一个非常流行的开源工具,用于进行负载测试。它支持多种网络协议,包括 HTTP、FTP、SMTP、JMS、SOAP、JDBC 等,使其成为在多种应用环境中检测性能瓶颈的理想选择。本文将详细介绍如何利用 JMeter 进行高效的接口自动化测试。 创建和执…

01 Docker 概述

目录 1.Docker简介 2.传统虚拟机 vs 容器 3.Docker运行速度快的原因 4.Docker基本组成三要素 5.Docker 平台架构 入门版 架构版 1.Docker简介 Docker是基于Go语言实现的云开源项目。 Docker的主要目标是:Build, Ship and Run Any App, Anywhere&#xff0c…

python3中的pdb使用

目录 1 介绍 1 介绍 有脚本文件main.py,其内容如下, import os import sys if __name__ "__main__":n 10for i in range(n):j i 10j j * j if j % 2 0:print("j is even!")else:print("j is odd.")n 20s 0 fo…

和鲸“101”计划领航!和鲸科技携手北中医,共话医学+AI 实验室建设及创新人才培养

为进一步加强医学院校大数据管理与应用、信息管理与信息系统,医学信息工程等专业建设,交流实验室建设、专业发展与人才培养经验,6 月 22 日,由北京中医药大学(简称“北中医”)主办,上海和今信息…