如果我向Jinja2传递一个包含空格的字符串,例如:
myStr = "my string" #a google.appengine.ext.db.StringProperty
然后渲染它,例如:
<div class={{ myStr }}>
生成的HTML是:
<div class="my" string>
我尝试通过创建过滤器以使用%20
或
替换空格来解决此问题,但似乎两者都无效,文字字符串会被渲染,如<div class="my string">
。< / p>
我发现的唯一确实实现预期结果的方法是:
<div class="{{ myStr }}">
但这是一种不受欢迎的风格;尤其是因为它完全破坏了(官方的)语法突出显示。
请注意,这会影响所有属性(我已尝试过),而不仅仅是class
。 (例如,在title
中想要一个空格似乎是合理的。)
我错过了什么,应该如何处理?
答案 0 :(得分:4)
Jinja 2对呈现的HTML没有任何意义;这是你的浏览器,它会因属性周围缺少引号而绊倒。从本质上讲,你正在产生:
<div class=my string>
这意味着空格后的部分是新属性,而不是class
属性的一部分。您会注意到代码美化颜色my
和string
的颜色不同; string
的颜色与class
相同。
添加属性以正确描绘属性:
<div class="{{ myStr }}">
生成输出
<div class="my string">
如果这打破了您的荧光笔,请获得更好的语法荧光笔。对于TextMate和Sublime Text,Jinja作者有provided a package,他还为ViM制作了一个。
是的,Sublime Text荧光笔没有在HTML属性中突出显示Jinja2构造:
这可能是设计上的,而不是你做错了什么的迹象。