0

2つの辞書のリストがあります

foobar = [ {dict1},
        {dict2}
      ]

Django のドキュメントによると、スライス テンプレート タグは python スライスとまったく同じように機能します。

だから私はpythonシェルでテストしましたが、確かに:

>>> foo = [1,2]
>>> foo[-2]
1

ただし、テンプレートでこれを行うと、次のようになります。

{% with foobar|slice:"-2" as previous_thing %}
{{ previous_thing }}

空のリストを取得します[]

{% with foobar|slice:"1" as previous_thing %}私が期待するもの(リストの最初の項目)と同様に{{ foobar }}(2つの辞書のリスト)が得られます。

一体何が起こっているのですか?

4

1 に答える 1

3
>>> foo = [1,2]

これは索引付けと呼ばれます。

>>> foo[-2]
1

これをスライシングと呼びます:

>>> foo[:-2]  #return all items up to -2 index(i.e 0th index), so empty list
[]
>>> foo[:-1]
[1]
>>> foo[:2]
[1, 2]

スライスは、存在しないインデックスに対しても機能します。

>>> foo[-10000:100000]
[1, 2]

しかし、インデックス作成はしません:

>>> foo[100000]
Traceback (most recent call last):
    foo[100000]
IndexError: list index out of range
于 2013-09-06T18:00:08.493 に答える