2017-05-06 44 views
0

我有一個步驟數組和一個方法來訪問在哪一步的過程。此方法返回進程名稱。我需要得到數組的位置,其值等於我所在的步驟。如何通過在Django模板中的值訪問數組索引?

例子:

模型

# 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模板中的值獲取數組的索引?

+0

目前還不清楚你是真的想要什麼,你有一個數組,你什麼真正想要的? 'next_step'從哪裏來? –

+0

myStep是我想要的。我有一個返回步驟名稱的函數,以及其他返回所有步驟的函數。我想獲得元素值等於我擁有的值的數組的索引,在這種情況下是步驟。我編輯了這個問題。 –

回答

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 }} 
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 
+0

是的,過程是一個對象。我不能重寫函數,因爲它在代碼中的其他地方使用。我已經考慮過了,在models.py中創建另一個方法來獲取數組的索引。我會看看能做些什麼。謝謝! –

+1

我相信應該有一種返回當前步驟的方法。 –

相關問題