当前位置: 首页 > 面试题库 >

如何使用Go模板通过FuncMap解析html文件

白星海
2023-03-14
问题内容

我使用以下代码来解析html模板。它运作良好。

func test(w http.ResponseWriter, req *http.Request) {

    data := struct {A int B int }{A: 2, B: 3}

    t := template.New("test.html").Funcs(template.FuncMap{"add": add})

    t, err := t.ParseFiles("test.html")

    if err!=nil{
        log.Println(err)
    }
    t.Execute(w, data)
}

func add(a, b int) int {
    return a + b
}

和html模板test.html。

<html>
<head>
    <title></title>
</head>
<body>
    <input type="text" value="{{add .A .B}}">
</body>
</html>

但是当我将html文件移动到另一个目录时。然后使用以下代码。输出始终为空。

t := template.New("./templates/test.html").Funcs(template.FuncMap{"add": add})

t, err := t.ParseFiles("./templates/test.html")

谁能告诉我怎么了?还是无法使用html / template包?


问题答案:

出问题的是您的程序(html/template程序包)找不到test.html文件。当您指定相对路径(您是相对路径)时,它们将解析到当前工作目录。

您必须确保html文件/模板在正确的位置。go run ...例如,如果您使用启动应用程序,则相对路径将解析到您所在的文件夹,该文件夹将成为工作目录。

此相对路径:"./templates/test.html"将尝试解析templates位于当前文件夹的子文件夹中的文件。确保它在那里。

另一种选择是使用绝对路径。

还有另一个重要说明: 请勿在处理程序函数中解析模板!可以处理每个传入的请求。而是将它们在包init()函数中解析一次。



 类似资料:
  • 问题内容: 标题输出很好,但是内容却没有。它里面有一些html,我得到了以下错误:像这样描述:http : //docs.angularjs.org/error/ $ sce:unsafe,这很好,但是那我怎么能在那里输出内容将在其中一些HTML,所以我必须将其设置为或smthn。正确的方法是什么? 编辑: AngularJS版本:1.2 问题答案: 因此解决方法是: 从http://code.a

  • 问题内容: 在.Net中,我发现了一个很棒的库HtmlAgilityPack,它使您可以使用XPath轻松解析格式不正确的HTML。我已经在.Net站点中使用了几年,但是我不得不为我的Python,Ruby和其他项目选择更痛苦的库。有人知道其他语言的类似库吗? 问题答案: 在python中,ElementTidy解析标记汤并生成一个元素树,该树允许使用XPath进行查询:

  • 问题内容: 有没有一种简单的方法,例如,但是要使用字符串从一组字符串构建模板? 我有一个基本模板和一个要在基本模板之上构建的页面模板列表(全部作为字符串)。 我想出了如何合并它们的方法,但是我的解决方案很冗长,即使可以使用,看起来也不是很优雅。 问题答案: 您可以使用 function 创建一个新的空模板。然后,您可以使用该 方法 创建一个新的,空的, 关联的 模板。您可以使用方法将其解析为“ i

  • 本文向大家介绍SpringBoot使用thymeleaf模板过程解析,包括了SpringBoot使用thymeleaf模板过程解析的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了SpringBoot使用thymeleaf模板过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.导入依赖 2.application.yml文件中新

  • 问题内容: 我在JMeter中使用正则表达式遇到了一些麻烦。我有这种形式的HTML 我需要获取JMeter 中and 的值作为变量。 问题答案: 请改用XPath Extractor 。 如果 必须 使用正则表达式,只需搜索正则表达式标签解析即可。

  • 这是我的模板: 这是我的视图模板: 我得到的内容是html,我想在视图中显示,但我得到的只是原始html代码。如何呈现HTML?