django切片过滤器使用的区别

时间:2017-06-30 04:17:42

标签: python django django-templates slice

我有一个Product Name列表,例如5个元素,但我想通过使用命令在模板中对其进行切片:

myList

或此命令:

{% for item in myList|slice:"3" %}

{% for item in myList|slice:":3" %}slice:"x"之间的区别是什么? (我目前没有安装django的机器,但我很好奇)

2 个答案:

答案 0 :(得分:4)

slice:"3"slice:":x"都是相同的,因为它们会从列表中返回前3个元素

但是如果你使用slice:"2:x"那么它将从列表的第一个中留下2个项目并从第3个项目中取出你在x变量中提到的数字,它基本上是参与其中

答案 1 :(得分:3)

他们产生相同的结果:

>>> from django.template import Template, Context
>>> Template('{{xs|slice:"3"}} {{xs|slice:":3"}}').render(Context({
...    'xs': list(range(10))
... }))
u'[0, 1, 2] [0, 1, 2]'

Django slice过滤器内部使用slice python函数(或类型)。

class slice(stop)   #  slice|"3" -> slice(3) -> slice(None, 3, None)
class slice(start, stop[, step])  # slice|":3" -> slice(None, 3, None)