为了账号安全,请及时绑定邮箱和手机立即绑定

Golang 的“html/template”包中的 HTML() 函数有问题

Golang 的“html/template”包中的 HTML() 函数有问题

Go
慕容708150 2021-07-01 14:01:26
我在获取"html/template"包以正确解析模板时遇到问题。我正在尝试将 HTML 内容解析为我制作的模板页面,但是,当我尝试时,解析的页面以转义的 HTML 结束,而不是我想要的实际代码。Go 文档说我可以简单地使用该HTML()函数将字符串转换为 a type HTML,这被认为是安全的并且应该被解析为 HTML。我已经Content在我的type Pagea 中创建了我的字段template.HTML,它编译得很好,但是当我template.HTML(content)在第 53 行中使用该函数时,我收到一个编译器错误说:template.HTML undefined (type *"html/template".Template has no field or method HTML)使用HTML(content)(没有前面的template.)会导致此错误:undefined: HTML我的最终目标是让其他 HTML 文件解析index.html为 HTML 并被浏览器解释为 HTML。任何帮助表示赞赏。package mainimport (    "fmt"    "html/template"    "io"    "io/ioutil"    "net/http"    "regexp"    "strings")func staticServe() {    http.Handle(        "/assets/",        http.StripPrefix(            "/assets/",            http.FileServer(http.Dir("assets")),        ),    )}var validPath = regexp.MustCompile("^/(|maps|documents|residents|about|source)?/$")//  This shit is messy. Clean it up.func servePage(res http.ResponseWriter, req *http.Request) {    type Page struct {        Title   string        Content template.HTML    }    pathCheck := validPath.FindStringSubmatch(req.URL.Path)    path := pathCheck[1]    fmt.Println(path)    if path == "" {        path = "home"    }    template, err := template.ParseFiles("index.html")    if err != nil {        fmt.Println(err)    }    contentByte, err := ioutil.ReadFile(path + ".html")    if err != nil {        fmt.Println(err)    }    content := string(contentByte)    page := Page{strings.Title(path) + " - Tucker Hills Estates", template.HTML(content)}    template.Execute(res, page)}//  Seriously. Goddamn.func serveSource(res http.ResponseWriter, req *http.Request) {    sourceByte, err := ioutil.ReadFile("server.go")    if err != nil {        fmt.Println(err)    }    source := string(sourceByte)    io.WriteString(res, source)}func main() {    go staticServe()    http.HandleFunc("/", servePage)    http.HandleFunc("/source/", serveSource)    http.ListenAndServe(":9000", nil)}
查看完整描述

2 回答

?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

您正在使用名为 template 的变量隐藏您的包。最简单的解决方法可能是将变量名称更改为 tmpl 或其他名称。


查看完整回答
反对 回复 2021-07-12
  • 2 回答
  • 0 关注
  • 406 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信