如何通过Django模板中的值访问数组索引?

时间:2017-05-06 18:25:21

标签: python arrays django

我有一个步骤数组和一个方法来访问该过程的步骤。此方法返回进程名称。我需要得到数组的位置,其值等于我所处的步骤。

示例:

模型

# mytemplate.html

{{ step }}
# prints 'passo_edit'

{{ steps }}
# prints ['passo_open','passo_edit','passo_add_file','passo_judge']

模板

myStep = 1

我需要的是获得1:

{{ steps.3 }} ## prints 'passo_judge'

我知道我可以通过索引获取步骤,例如:

    # value = how_to_get_index(steps,step)
    # print value
    # prints 3 

我需要的是:

{{1}}

我有一些步骤的链接,但我必须打印只有它低于next_step。这就是为什么我必须得到这个号码所以我可以打印模板中的链接,直到 myStep 。如何通过Django模板中的值获取数组的索引?

2 个答案:

答案 0 :(得分:1)

我认为不可能使用内置的Django模板功能,因为Django不鼓励为模板添加太多逻辑。您可以创建另一个函数来返回当前步骤索引而不是它的值。

如果您确实需要在模板上执行此操作(即使不建议这样做),您可以编写一个Custom template filter,如下所示:

from django import template

register = template.Library()

@register.filter(name='cut')
def list_index_from_value(list_, value):
    return list_.index(value)

在模板上你可以这样使用:

{{ steps|list_index_from_value:step }}

答案 1 :(得分:0)

目前还不清楚什么是process变量,但在我看来,这是某类课程的一种对象。

您可以重写process.get_current_step()以返回步骤名称及其索引

class Process:
    _current_step = 0
    steps = ['passo_open','passo_edit','passo_add_file','passo_judge']

    def get_current_step():
        return steps[_current_step], _current_step

此处.get_current_step()将返回tuple,其中第一个值为步骤名称,第二个值为current_step

如果您希望变量只存储您的步骤名称,请使用

step, _ = process.get_current_step()

如果你想要元组,那么只需

step = process.get_current_step()

然后在你的模板中你会有

{{ step }}  # prints 'passo_judge', 1