不能在Django模板标签中进行子串

时间:2012-01-19 22:45:15

标签: django

我试图在字符串中添加尾随's',除非字符串的最后一个字符是's'。我如何在Django模板中执行此操作?下面的[-1]导致错误:

{{ name }}{% if name[-1] != "s" %}s{% endif %}

5 个答案:

答案 0 :(得分:4)

尝试slice过滤器

{% if name|slice:"-1" != "s" %}

答案 1 :(得分:2)

{% if name|slice:"-1:"|first != "s" %}s{% endif %}

Django的切片过滤器不能正确处理无冒号切片,因此切片:“ - 1”解决方案不起作用。另外,利用第一个过滤器似乎可以解决问题。

答案 2 :(得分:1)

  

Django模板系统提供的标签功能与某些编程结构类似 - 布尔测试的if标签,a   用于循环的标记等 - 但这些并不是简单地执行   相应的Python代码,模板系统不会执行   任意Python表达式。

使用slice built-in filter

答案 3 :(得分:1)

不确定这是否是您正在寻找的,但是django有一个内置的模板过滤器,可以复制单词。它被称为:复数。 你想要这样的东西:

{{name | pluralize}}

查看https://docs.djangoproject.com/en/dev/ref/templates/builtins/

答案 4 :(得分:0)

{% if name|last != "s" %}完成工作