模板中的Django切片号码

问题描述:

有没有办法在django模板中获取给定数字的多个数字?模板中的Django切片号码

例如:

{{ some_num|get_digit:2 }} 

会给你第二个最右边的数字。对于1224531这将是3

有没有办法得到最后3位数字或前5位数字?像python的切片?

类似:

{{ some_num|get_digits:2,5}} 
+1

搜索“Django的模板标签片”将带来你答案! – Stefano 2012-01-11 23:32:18

有一个的 “切片” 模板标签

https://docs.djangoproject.com/en/dev/ref/templates/builtins/#slice

它使用相同的语法,Python的名单切片。

例子:

{{ some_list|slice:":2" }} 

在Python这相当于:

some_list[:2] 

BTW你的第二个例子是"2:5""2,5"

NB。 Python切片适用于任何“序列”。字符串和列表是序列。数字不是!

+0

但这是否意味着我不得不将数字先转换为列表? – 2012-01-11 23:42:05

+0

@9位:切片标签的工作方式类似于python的切片:一个字符串是可迭代的,所以它在字符串上完美工作。它不适用于数字 - 但同样,python的切片也不适用于数字。 – Stefano 2012-01-12 11:18:22

+0

不适用于动态值 - 即切片索引来自变量。 在Jinja2模板中,您只需{{some_list [:upper_index]}}就可以了。 – Evgeny 2014-11-13 04:00:32

{{1234567|make_list|slice:'2:5'|join:''}}

斯特凡诺的答案是正确的轨道上。您需要一个预处理步骤将您的号码转换为列表,以及一个后处理步骤,将该列表合并回字符串。

任何额外的过滤器可以在切片之前将数字转换为字符串。我用这些变种:

{{ some_num|slugify|slice:"2:5" }} 

{{ some_num|stringformat:"d"|slice:"5:10" }}