python - 使用带空格的 Jinja2 字符串作为 HTML 属性

标签 python html jinja2

如果我向 Jinja2 传递一个包含空格的字符串,例如:

myStr = "my string" #a google.appengine.ext.db.StringProperty

然后渲染它,例如:

<div class={{ myStr }}>

生成的 HTML 是:

<div class="my" string>

我尝试通过创建过滤器来解决这个问题,用 %20 替换空格或 &nbsp; , 但似乎两者都无效,呈现了文字字符串,如 <div class="my&nbsp;string"> .

我发现的唯一确实呈现预期结果的方法是:

<div class="{{ myStr }}">

但这是一种不受欢迎的风格;尤其是因为它完全破坏了(“官方”)语法突出显示。

请注意,这会影响所有属性(我已经尝试过),而不仅仅是 class . (例如,在 title 中想要一个空格似乎是合理的)。

我错过了什么,应该如何处理?

最佳答案

Jinja 2 不会对呈现的 HTML 做这样的事情;您的浏览器 将因属性周围缺少引号而绊倒。本质上,您正在生成:

<div class=my string>

这意味着空格之后的部分是新属性,而不是class属性的一部分。您会注意到代码美化器为 mystring 设置了不同的颜色; string 的颜色与 class 的颜色相同。

添加属性以正确描述属性:

<div class="{{ myStr }}">

产生输出

<div class="my string">

如果这会破坏您的荧光笔,请获得更好的语法荧光笔。对于 TextMate 和 Sublime Text,Jinja 作者有 provided a package ,他还为 ViM 制作了一个.

是的,Sublime Text 高亮器不会高亮显示 HTML 属性中的 Jinja2 结构:

Sublime Text 3 highlighting of Jinja2 template code

这可能是设计使然,并不表示您做错了什么。

关于python - 使用带空格的 Jinja2 字符串作为 HTML 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26004665/

相关文章:

Python OpenCV 模板匹配和特征检测无法正常工作

python - 从 Python URL 中提取特定文本

javascript - 微调器不工作

javascript - 在 Flask 中显示加载/启动页面

python - 如何在 Jinja 中实现类似 Django 的标签

python - 将变量传递到扩展模板中?

python - 使 optparse 将某些选项视为位置参数

python - ipython 和 bpython 有什么区别?

javascript - 从 ListView 中选择时如何将值传递给另一个页面

javascript - 与 javascript innerText 属性混淆