首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何通过Django模板中数组的值访问数组索引?

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

Stack Overflow用户
提问于 2017-05-06 18:25:20
回答 2查看 5.4K关注 0票数 0

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

示例:

模型

代码语言:javascript
运行
复制
# models.py

steps = ['passo_open','passo_edit','passo_add_file','passo_judge']

step = process.get_current_step()

print step 
#prints 'passo_edit'

模板

代码语言:javascript
运行
复制
# mytemplate.html

{{ step }}
# prints 'passo_edit'

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

我需要的是得到1而不是:

代码语言:javascript
运行
复制
myStep = 1

我知道我可以一步一步地得到索引,例如:

代码语言:javascript
运行
复制
{{ steps.3 }} ## prints 'passo_judge'

我需要的是:

代码语言:javascript
运行
复制
    # value = how_to_get_index(steps,step)
    # print value
    # prints 3 

我有一系列的步骤链接,但我必须打印只有当它低于next_step。这就是为什么我必须得到数字,这样我才能在模板中打印链接,直到myStep。如何通过Django模板中数组的值来获取数组的索引?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-06 18:38:24

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

如果您确实需要在模板上这样做(尽管不建议这样做),您可以编写如下所示的自定义模板过滤器

代码语言:javascript
运行
复制
from django import template

register = template.Library()

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

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

代码语言:javascript
运行
复制
{{ steps|list_index_from_value:step }}
票数 1
EN

Stack Overflow用户

发布于 2017-05-06 18:52:11

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

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

代码语言:javascript
运行
复制
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

如果希望变量仅存储步长名称,则请使用

代码语言:javascript
运行
复制
step, _ = process.get_current_step()

如果你想要元组的话

代码语言:javascript
运行
复制
step = process.get_current_step()

然后在你的模板里

代码语言:javascript
运行
复制
{{ step }}  # prints 'passo_judge', 1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43823950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档