如何将模板标签作为变量阅读?

时间:2014-05-05 07:43:15

标签: python django templatetags

我已经创建了一个模板标签,它将字符串转换为list。现在我想迭代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>

请有人告诉我如何将模板标签作为变量阅读?

1 个答案:

答案 0 :(得分:0)

documentation on passing template variables to tags详细说明了您的问题的答案,但您的代码存在更大的问题。

我怀疑你所拥有的是"[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