我在获取"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 main
import (
"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)
}
幕布斯6054654
相关分类