2012-01-11 10 views
7

djangoテンプレート内で与えられた数字の複数の数字を取得する方法はありますか?例えばテンプレートのdjangoスライス番号

{{ some_num|get_digit:2 }} 

はあなたに第2の右の桁を与えるだろう。 1224531の場合3

最後の3桁または最初の5桁を取得する方法はありますか? Pythonのスライスのように?以下のような

何か:

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

は答えにあなたを持っているだろう! – Stefano

答えて

20

"スライス" テンプレートタグ

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

は、それはPythonのリストのスライスと同じ構文を使用していますがあります。

例:ところで、あなたの第二の例では、"2:5"ない"2,5"

NBだろう

some_list[:2] 

:Pythonで

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

これは同等です。 Pythonスライシングはどのような「シーケンス」でも機能します。文字列とリストはシーケンスです。数字はありません!

+0

しかし、これは最初にリストに番号を変換しなければならないのですか? –

+0

@ 9-bits:スライスタグはPythonのスライスのように機能します。文字列はiterableなので、stringで完全に動作します。数値では機能しませんが、Pythonのスライスは数値でも機能しません。 – Stefano

+0

は動的値、つまりスライスのインデックスが変数から来るところでは機能しません。 Jinja2のテンプレートでは{{some_list [:upper_index]}}だけで動作します。 – Evgeny

1

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

ステファノの答えは正しい軌道に乗っています。数字をリストにする前処理ステップと、そのリストを文字列にマージするための後処理ステップが必要です。

0

スライシングする前に数値を文字列に変換するフィルタがあれば、それは機能します。私は、これらの変異体を使用:「Djangoテンプレートタグスライス」を検索

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

{{ some_num|stringformat:"d"|slice:"5:10" }} 
関連する問題