【发布时间】:2020-05-04 09:45:59
【问题描述】:
如何在模板上渲染 jinja 代码?
例如,我有一个路由需要在给定的 HTML 模板上呈现 jinja 代码,如下所示:
from app import app
from flask import render_template
from jinja2 import Template
@app.route('/View/Package')
def getView():
HtmlDesc="""
<div class="codehilite"><pre><span></span><span class="p">{{</span><span class="n">cookiecutter</span><span class="o">.</span><span class="n">repo_name</span><span class="p">}}</span><span class="o">/</span><span class="p">{{</span><span class="n">cookiecutter</span><span class="o">.</span><span class="n">repo_name</span><span class="p">}}</span><span class="o">/</span><span class="p">{{</span><span class="n">cookiecutter</span><span class="o">.</span><span class="n">repo_name</span><span class="p">}}</span><span class="o">.</span><span class="n">py</span>
</pre></div>
"""
return render_template('package.html', html=Template(HtmlDesc).render())
在模板上,我尝试使用 {% raw %}..{% endraw %} 和 {% filter escape %} .. {% endfilter %} 转义 jinja 代码,如文档中的 here 所示,但它仍然不起作用:
<h1>Project Description</h1>
<div class="project-description">
{% raw %}{% filter escape %}{{html|safe}}{% endfilter %}{% endraw %}
</div>
</div>
例外:
TemplateSyntaxError: 意外'
我知道错误在{{</span><span... 和class="p">}},值为HtmlDesc,因此我正在寻找一种适当的方法来逃避这类神社字符,以便在模板上正确呈现这个神社代码。谢谢。
已添加
我想要实现的是我希望 HtmlDesc 的 html 和 jinja 代码能够在 Web 浏览器上正确解释和呈现。在我的实际应用程序中,上面的文本不是上面示例 sn-p 中的固定值,它从包含在 python 包中的文本文件README 中读取值并转换为 HTML 代码。它上面的示例文本是从python包cookiecutter读取的。
【问题讨论】: