我在获取"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 回答
- 0 关注
- 406 浏览
添加回答
举报
0/150
提交
取消