【发布时间】:2016-10-28 12:04:04
【问题描述】:
我正在将我的一个宠物项目从 Python 转换为 Go,只是为了帮助我稍微熟悉一下这门语言。我目前面临的一个问题是它正在逃避我的正斜杠。所以它会收到这样的字符串:
/location/to/something
然后就变成了
%2flocation%2fto%2fsomething
现在,它只有在链接中时才会这样做(从我一直在阅读的内容来看,此转义是上下文相关的)所以这就是 HTML 模板中的行的样子:
<tr><td><a href="/file?file={{.FullFilePath}}">{{.FileName}}</a></td></tr>
如果可能,如何在模板或代码本身中防止这种情况发生?
这就是我的模板函数的样子(是的,我知道它很老套)
func renderTemplate(w http.ResponseWriter, tmpl string) {
t, err := template.ParseFiles(templates_dir+"base.html", templates_dir+tmpl)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
if tmpl == "view.html" {
err = t.Execute(w, FileList)
} else {
err = t.Execute(w, nil)
}
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
}
}
【问题讨论】:
-
@icza,感谢您向我推荐该链接,但我看不到如何在此处实施该解决方案。诚然,我仍然是一个菜鸟,所以也许这就是原因。我最终确实找到了另一个问题,其解决方案最终帮助了我,所以我在这里发布了。
-
在下面查看我的答案。
标签: templates go go-templates