我有一个步骤数组和一个方法来访问该过程的步骤。此方法返回进程名称。我需要得到数组的位置,其值等于我所处的步骤。
示例:
模型
# 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模板中的值获取数组的索引?
答案 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