Django模板中的"|"符号是什么意思?

8
我经常看到这样的内容: something.property|escape
something是一个对象,property是它的字符串属性。而escape则表示转义的意思。
这是什么意思?在哪个版本的Python中使用?


编辑:问题问错了,它说“Python中的|是什么意思”,因此位或操作的答案是正确的,但与本题无关,请不要对它们进行负面评价。


如果您能提供更多的上下文信息,那将会很有帮助,而不仅仅是表达式本身。这是一个可以被重载的运算符。 - S.Lott
3个回答

14

竖线(|)表示你想将左侧的结果发送到右侧定义的过滤器中。过滤器将以某种方式修改该值。

'escape'过滤器只是众多过滤器之一。

内置过滤器列表可以在此找到: Django 文档 - 内置过滤器参考

在 Django 模板中,竖线 (|) 绝不意味着 '按位或' 运算符。


绝对不意味着“按位或”。感谢您的澄清。 - dlink

10

obj.property|escape 是在模板中应用 转义过滤器 的方法,它将对该属性的字符串表示进行 HTML 转义。


所以,something.property | escape == escape(something.property)? - Dima
嗯 - 很高兴这个答案有所帮助,但从技术上讲,这不是Python。 - Kenan Banks
Dima,只能在模板中使用。并且仅在语义上相等,我不确定(可能是可能的,因为我的Django已经生疏了),你是否可以像“escape(something.property)”这样编写它。 - Vinko Vrsalovic
在编辑问题时,请更加小心——很多针对原始问题(“…在Python中的含义”)的答案正在因为它们看起来不再相关而被投票降低。 - Ben Blank
不,你不能在Django模板中以函数调用的形式重写它。你必须使用管道符号。Django模板不等同于Python代码。而且你不能仅仅以这种方式使用任何Python函数,它必须作为一个模板过滤器在被加载进模板中的模板库中进行注册。 - Carl Meyer
它的正确名称是“内置模板过滤器”。它不等同于函数调用。但你可以这样理解它。最大的区别在于你必须使用 Django 提供的过滤器列表,并使用 Django 定义的语法。我不考虑自定义过滤器。那将是另一回事。 - Diansheng

-3

这是一个按位“或”操作。它的意思是,如果属性不存在或为空,则进行转义。


保罗,逻辑“或”运算符写作“or”。 “|”是按位运算符。 - rodbv

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接