2012-01-11 7 views
7

는 장고 템플릿 내에서 주어진 수의 여러 숫자를 얻을 수있는 방법이 있나요? 예를 들어장고 슬라이스 번호

:

{{ some_num|get_digit:2 }} 

당신에게 두 번째 가장 오른쪽 자리를 줄 것이다. 1224531의 경우는 3

마지막 3 자리 또는 처음 5 자리 숫자를 얻을 수있는 방법이 있나요 있을까? 파이썬 조각처럼? 같은

뭔가 :

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

대답에 당신을 데려 것입니다! – Stefano

답변

20

그것은 파이썬의리스트 슬라이스와 같은 구문을 사용하는은 "슬라이스"템플릿 태그

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

있습니다.

예 :이 동일합니다 파이썬에서

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

:

some_list[:2] 

BTW 당신의 두번째 예는 "2:5"하지 "2,5"

NB 것이다. 파이썬 조각은 모든 '시퀀스'에서 작동합니다. 문자열과 목록은 시퀀스입니다. 숫자는 그렇지 않습니다!

+0

하지만 이것은 번호를 먼저 목록으로 변환해야한다는 의미입니까? –

+0

@ 9-bits : 슬라이스 태그는 파이썬의 조각처럼 작동합니다. 문자열은 반복 가능하므로 문자열에서 완벽하게 작동합니다. 숫자에 대해서는 작동하지 않지만 파이썬의 슬라이스는 숫자에 대해서도 작동하지 않습니다. – Stefano

+0

은 동적 값, 즉 슬라이스 인덱스가 변수에서 오는 경우 작동하지 않습니다. Jinja2 템플릿에서 당신은 할 {{some_list의 [: upper_index]}} 그것은 작동합니다. – Evgeny

1

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

스테파노의 대답은 올바른 궤도에있다. 전화 번호를 목록으로 바꾸려면 사전 처리 단계가 필요하고 해당 목록을 다시 문자열로 병합하는 사후 처리 단계가 필요합니다.

0

슬라이스가 작동하기 전에 숫자를 문자열로 변환 여분의 필터. 나는 이러한 변형 사용 :

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

와 "장고 템플릿 태그 조각"에 대한 검색

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