2012-01-11 106 views
7

有沒有辦法在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

回答

20

有一個的 「切片」 模板標籤

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

1

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

斯特凡諾的答案是正確的軌道上。您需要一個預處理步驟將您的號碼轉換爲列表,以及一個後處理步驟,將該列表合併回字符串。

0

任何額外的過濾器可以在切片之前將數字轉換爲字符串。我用這些變種:

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

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