在应用程序引擎的变量中传递html元素?

2024-04-26 03:14:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在将文本保存在appengine的ndb数据存储中。检索时,我正在使用markdown2库将标记转换为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">&lt;p&gt;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 &amp;nbsp;o &amp;nbsp;bgv vomhg bmvm vmbvl lm &amp;nbsp; mvjpbg&lt;/p&gt;&lt;p&gt;Use &lt;strong&gt;bold&lt;/strong&gt;, &lt;em&gt;italics&lt;/em&gt;, &lt;strong&gt;&lt;em&gt;both&lt;/em&gt;&lt;/strong&gt; &lt;strong&gt;and&lt;/strong&gt; &lt;a href="http://zenpen.io"&gt; urls &lt;/a&gt;_ just_ by highlighting the text and selecting them from the tiny options box that appears above it.&amp;nbsp;&lt;/p&gt;&lt;p&gt;fdbgbfbvbvbbghh&lt;/p&gt;&lt;blockquote&gt; &lt;p&gt;Quotes are easy to add too! &amp;nbsp;fjbgbknvkbvnm i m vm vi mfbm b bo gb gbgb gjkcdfkvc bnbv n oibio nbiffhi nfjkgfkjv &amp;nbsp;gdrf&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;gdfbcdjifjgfgethfb&lt;/p&gt;&lt;p&gt;gfbfgbf&lt;/p&gt;&lt;p&gt;hhgbvgfgh&lt;/p&gt;</article>

如果我将变量作为json dump传递,或者仅仅通过self.response.write()传递,那么它传递的是正确的。你知道吗

有没有办法将变量中的html元素传递给模板。我在用jinja2做模板。 如果可以的话,请描述原因以及appengine如何将变量传递给template.thanx


Tags: and标记ltgt模板modelhtmlarticle
1条回答
网友
1楼 · 发布于 2024-04-26 03:14:34

您正在与自动转义发生冲突,请参见http://jinja.pocoo.org/docs/dev/api/#autoescaping。正如@dm03514在一篇评论中提到的,最好的解决方案不是关闭自动转义(它可能会使您暴露于“注入”攻击),而是明确地标记为安全,使用safeJinjia2内置过滤器,您知道的HTML是安全的,并且希望这样注入。你知道吗

相关问题 更多 >