我有一本叫做“asides”的python字典。这个dict的值是从我的数据库加载的html片段,我想把它们注入到jinja模板中。在
以下是jinja片段:
<div class="small-3 large-3 columns">
{% for k in asides.keys() %}
<div id={{k}} class="aside">{{asides[k]|safe}}</div>
{% endfor %}
</div>
这将创建嵌套的div。假设我的dict有id 1和2,这将执行以下操作:
^{pr2}$如果我删除安全过滤器,它的行为通常是创建非嵌套div。在
我想知道为什么安全过滤器会这样做,以及如何避免它(因为我不想要嵌套的div)。在
好吧,根据评论中的建议,我意识到问题出在哪里了。在我看来,这是一件有趣的事,所以我要把它记录在这里。在
所以,在应用程序副本(使用烧瓶):
from flask import Flask, render_template
app = Flask(__name__)
app.debug = True
@app.route('/')
def index():
d = {'1':'<p>Test 1</p', '2':'<p>Test 2</p>'}
return render_template('index.html', d=d)
if __name__=='__main__':
app.run()
注意d中第一个元素的html是如何不正确的。结束p标记缺少“>;”。在
然后在模板中
<html>
<body>
<div>
{% for k in d %}
<div class={{k}}>{{d[k]|safe}}</div>
{% endfor %}
</div>
</body>
</html>
这将在第一个div中嵌套第二个div
我认为这个问题仍然悬而未决,因为知道为什么会发生这样的事情会很有趣。在
模板有错误
第一个para标记没有正确关闭,应该是
^{pr2}$我也遇到了同样的问题,输入数据中的HTML标记不完整。在
我不确定这是否是一个Jinja错误,也许它可以更好地处理它,或者创建一个错误
相关问题 更多 >
编程相关推荐