我正在app引擎中的ndb数据存储区中的markdown中保存文本。在检索时我正在使用markdown2库将markdown转换为html 并将其作为参数传递给模板进行渲染。代码如下:
article_content = model.Article.query(model.Article.tittle == article_tittle).fetch()
if article_content:
for article in article_content:
content = markdown.markdown(article.content)
tittle = article.tittle
date = article.date
params = {
'page' : 'article',
'tittle' : tittle,
'content' : content
}
self.render_response('article.html',**params)
但是当我渲染模板时,html标签被转换为html实体:
<article class="article"><p>A minimalist writing zone, where you can block out all distractions and get to what's important. The writing!bvbvbvjbvbknvbvbnvbvbn jvnbnvbgnb n vgnvbn n n bn inovblv &nbsp;o &nbsp;bgv vomhg bmvm vmbvl lm &nbsp; mvjpbg</p><p>Use <strong>bold</strong>, <em>italics</em>, <strong><em>both</em></strong> <strong>and</strong> <a href="http://zenpen.io"> urls </a>_ just_ by highlighting the text and selecting them from the tiny options box that appears above it.&nbsp;</p><p>fdbgbfbvbvbbghh</p><blockquote> <p>Quotes are easy to add too! &nbsp;fjbgbknvkbvnm i m vm vi mfbm b bo gb gbgb gjkcdfkvc bnbv n oibio nbiffhi nfjkgfkjv &nbsp;gdrf</p></blockquote><p>gdfbcdjifjgfgethfb</p><p>gfbfgbf</p><p>hhgbvgfgh</p></article>
如果我将变量作为json转储传递或仅通过self.response.write()
传递,则传递正确。
有没有办法将变量中的html元素传递给模板。我正在使用jinja2进行模板化。 如果可以,请说明原因以及app引擎如何将变量传递给模板.thanx
答案 0 :(得分:1)
您正在与自动调整发生冲突,请参阅http://jinja.pocoo.org/docs/dev/api/#autoescaping。正如@ dm03514在评论中提到的那样,最好的解决方案是不来关闭autoescaping(它可能会让你暴露于&#34;注射&#34;攻击),而是专门标记为安全, safe
Jinjia2内置过滤器,您知道的HTML 是安全的,并且想要这样注入。