0

我已经制作了一个将字符串转换为列表的模板标签。现在我想迭代 for 循环。为此,我需要使模板标签作为变量可读。

这是我的模板标签

from django import template
register = template.Library()

@register.simple_tag
def get_list(string):
    try:
        list_out = eval(string)
        return list_out
    except:
        return ""

通过以下方法,我将其称为 HTML 代码:

<tr>
    <td>{% get_list object.approvals_pending %}</td>
</tr>

好心的人告诉我如何将模板标签作为变量读取?

4

1 回答 1

0

您的问题的答案在有关将模板变量传递给标签的文档中有详细说明,但是您的代码存在更大的问题。

我怀疑你所拥有的是"[a,b,c]"一个变量,你想在你的模板中迭代它;这就是为什么您eval("[a,b,c]")要将其转换为列表的原因。

请停止这样做。

相反,在您看来,您需要正确评估变量,您可以使用 json 库:

>>> import json
>>> i = '[1,2,3]'
>>> type(i)
<type 'str'>
>>> z = json.loads(i)
>>> type(z)
<type 'list'>
>>> z[0]
1
于 2014-05-05T07:57:08.107 回答