我有一个步骤数组和一个方法来访问进程的步骤。此方法返回进程名。我需要得到数组的位置,其中的值等于我所处的步骤。
示例:
模型
# models.py
steps = ['passo_open','passo_edit','passo_add_file','passo_judge']
step = process.get_current_step()
print step
#prints 'passo_edit'模板
# mytemplate.html
{{ step }}
# prints 'passo_edit'
{{ steps }}
# prints ['passo_open','passo_edit','passo_add_file','passo_judge']我需要的是得到1而不是:
myStep = 1我知道我可以一步一步地得到索引,例如:
{{ steps.3 }} ## prints 'passo_judge'我需要的是:
# value = how_to_get_index(steps,step)
# print value
# prints 3 我有一系列的步骤链接,但我必须打印只有当它低于next_step。这就是为什么我必须得到数字,这样我才能在模板中打印链接,直到myStep。如何通过Django模板中数组的值来获取数组的索引?
发布于 2017-05-06 18:38:24
我不认为使用内置的Django模板特性是可能的,因为Django不鼓励在模板中添加太多的逻辑。您可以创建另一个函数,它返回当前步骤索引,而不是它的值。
如果您确实需要在模板上这样做(尽管不建议这样做),您可以编写如下所示的自定义模板过滤器:
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 }}发布于 2017-05-06 18:52:11
还不清楚什么是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', 1https://stackoverflow.com/questions/43823950
复制相似问题