Python 如何在模板上正确转义Jinja代码?
如何在模板上呈现jinja代码 例如,我有一个路由需要在给定的HTML模板上呈现jinja代码,如下所示:Python 如何在模板上正确转义Jinja代码?,python,jinja2,Python,Jinja2,如何在模板上呈现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
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())
除此之外:
TemplateSyntaxError:意外“在要显示的内容的末尾添加一个| safe。它会把事情弄清楚的。把它也做成一根绳子 在模板中,您似乎缺少标记中
{{}
中的|safe
您还必须删除
Template()
以确保整个字符串被转义在问题中,我确实在模板中的jinja
代码旁边做了一个{html|safe}
。但它仍然会引发一个异常,如图所示。ThanksI在HtmlDesc变量中的意思是在span class=“p”
之后,啊,我明白你的意思了,这似乎很难做到,因为HtmlDesc
中的文本并不是一个固定的值。在我的应用程序中,它接收从包含python包的文本文件README
读取的值,并将其转换为html。上面的文字是从包装上读来的。谢谢,恐怕我不明白你想达到什么目的。要将html desc呈现为html代码还是纯文本请尝试删除Template()调用
<h1>Project Description</h1>
<div class="project-description">
{% raw %}{% filter escape %}{{html|safe}}{% endfilter %}{% endraw %}
</div>
</div>