如果我向 Jinja2 传递一个包含空格的字符串,例如:
myStr = "my string" #a google.appengine.ext.db.StringProperty
然后渲染它,例如:
<div class={{ myStr }}>
生成的 HTML 是:
<div class="my" string>
我尝试通过创建过滤器来解决这个问题,用 %20
替换空格或
, 但似乎两者都无效,呈现了文字字符串,如 <div class="my string">
.
我发现的唯一确实呈现预期结果的方法是:
<div class="{{ myStr }}">
但这是一种不受欢迎的风格;尤其是因为它完全破坏了(“官方”)语法突出显示。
请注意,这会影响所有属性(我已经尝试过),而不仅仅是 class
. (例如,在 title
中想要一个空格似乎是合理的)。
我错过了什么,应该如何处理?
最佳答案
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 结构:
这可能是设计使然,并不表示您做错了什么。
关于python - 使用带空格的 Jinja2 字符串作为 HTML 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26004665/