我已按照本教程进行操作:http :
//golang.org/doc/articles/wiki/final.go,并根据我的需要/想要对其进行了略微修改。问题是我想在模板中支持HTML。我意识到这是安全隐患,但目前尚无问题。
页面渲染的结果:
<h1>this<strong>is</strong>a test</h1>
让我解释一下代码:
type Page struct {
Title string
Body []byte
}
我想要的HTML数据存储在中Page.Body
。这是类型[]byte
,表示我无法(或可以吗?)运行html/template.HTML(Page.Body)
该函数需要一个字符串。
我有这个预渲染模板:
var (
templates = template.Must(template.ParseFiles("tmpl/edit.html", "tmpl/view.html"))
)
实际的ExecuteTemplate
样子是这样的:
err := templates.ExecuteTemplate(w, tmpl+".html", p)
其中w是w http.ResponseWriter
,tmpl是tmpl string
,p是p *Page
最后,我的'view.html'
(模板)如下所示:
<h1>{{.Title}}</h1>
<p>[<a href="/edit/{{.Title}}">edit</a>]</p>
<div>{{printf "%s" .Body}}</div>
我尝试过的事情:
{{printf "%s" .Body | html}}
什么也没做 github.com/russross/blackfriday
Markdown处理器,并运行了p.Body = blackfriday.MarkdownCommon(p.Body)
将Markdown正确转换为HTML的运行,但是HTML仍作为实体输出。var s template.HTML
s = template.HTML(p.Body)
p.Body = []byte(s)
任何指导,不胜感激。如果我感到困惑,请询问,然后我可以修改我的问题。
将您的[]byte
或转换string
为类型template.HTML
(在此处记录)
p.Body = template.HTML(s) // where s is a string or []byte
然后,在您的模板中,只需:
{{.Body}}
它将被打印而不会逃脱。
编辑
为了能够在页面正文中包含HTML,您需要更改Page
类型声明:
type Page struct {
Title string
Body template.HTML
}
然后分配给它。
rank ▲ ✰ vote url 72 349 49 512 url 怎么样去除空格(包括tab)? 有什么函数既可以去掉空格也能去掉tab? 在两侧的空白: s = " \t a string example\t " s = s.strip() 右边的空白: s = s.rstrip() 左边的空白: s = s.lstrip() 也可以指定字符来去除: s = s.strip('
HTML不支持在HTML页面中嵌入HTML页面。 要实现此功能,我们可以使用以下选项之一 - Using Ajax - 进行服务器调用以获取相应的HTML页面并将其设置在HTML控件的innerHTML中。 Using Server Side Includes - JSP,PHP和其他Web端服务器技术可以在动态页面中包含HTML页面。 使用AngularJS,我们可以使用ng-include指令
我有这个BST的问题,我想在Java解决,但我不知道为什么它不起作用。问题就在这里: > 二叉搜索树(BST)是一种二叉树,其中每个节点的值大于或等于该节点左子树中所有节点的值,而小于该节点右子树中所有节点的值。 编写一个函数,检查给定的二叉搜索树是否包含给定的值。 例如,对于以下树: n1(值:1,left:null,right:null)n2(值:2,left:n1,right:n3)n3(值
问题内容: 情况: Go程序包 A 由3个文件组成,每个文件中我都使用另一个程序包 B 中的函数。我必须在每个文件的开头导入包 B。 题: 程序包 B 实际上是初始化3次还是仅初始化1次? 问题答案: 简短答案:初始化仅执行一次。 长答案:引用相关的规范部分- 程序执行: 通过为所有包级变量分配初始值,然后使用名称和签名调用任何包级函数来初始化不导入的包 在其来源中定义。名称为package-sc
我正试图在Mac OS X El Capitan上使用创建一个虚拟环境。我已经用安装了Python 2.7.11,默认情况下包括、和。 然而,当我尝试安装以下说明在留档或从任何其他资源,我得到几个问题: 完成其工作后,可执行文件未放置在中,因此我需要手动它(这可能表明此步骤的安装有问题) 运行后,它会创建新的环境,从-安装中捕获Python 2.7.11,但是:文件夹中没有。这意味着,如果我尝试,
问题内容: 在1.6.0_16 JDK上工作时,我使用Apache CXF 2.5.2从WSDL生成了存根类,Apache CXF 2.5.2使用了最新的jaxb- api 2.2。我知道可以使用jaxb-api 2.1,但是为了避免兼容性问题,我宁愿使用当前版本。由于我的JDK具有jaxb 2.1,因此构建失败并显示以下消息: 因此,我尝试使用以下依赖项使Maven包括最新的jaxb api和i