OJF*_*ord 3 html python jinja2
如果我向 Jinja2 传递一个包含空格的字符串,例如:
myStr = "my string" #a google.appengine.ext.db.StringProperty
Run Code Online (Sandbox Code Playgroud)
然后渲染它,例如:
<div class={{ myStr }}>
Run Code Online (Sandbox Code Playgroud)
生成的 HTML 是:
<div class="my" string>
Run Code Online (Sandbox Code Playgroud)
我尝试通过创建过滤器来解决这个问题,用%20or替换空格 ,但似乎两者都无效,文字字符串被呈现,如<div class="my string">.
我发现确实呈现预期结果的唯一方法是:
<div class="{{ myStr }}">
Run Code Online (Sandbox Code Playgroud)
但这是一种不受欢迎的风格;尤其是因为它完全破坏了(“官方”)语法突出显示。
请注意,这会影响所有属性(我已经尝试过),而不仅仅是class. (title例如,想要一个空格似乎是合理的)。
我错过了什么,这应该如何处理?
Jinja 2 对渲染的 HTML 没有做这样的事情;您的浏览器会因属性周围缺少引号而绊倒。从本质上讲,您正在生成:
<div class=my string>
Run Code Online (Sandbox Code Playgroud)
这意味着空格后面的部分是新属性,而不是属性的一部分class。你会注意到代码prettifier颜色my和string不同的; string就像class是一样的颜色。
添加属性以正确描述属性:
<div class="{{ myStr }}">
Run Code Online (Sandbox Code Playgroud)
产生输出
<div class="my string">
Run Code Online (Sandbox Code Playgroud)
如果这破坏了您的荧光笔,请使用更好的语法荧光笔。Jinja 作者为 TextMate 和 Sublime Text提供了一个包,他也为ViM制作了一个包。
是的,Sublime Text 高亮器不会高亮 HTML 属性中的 Jinja2 结构:
这可能是设计使然,而不是你做错了什么的迹象。