我已经创建了一个模板标签,它将字符串转换为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>
请有人告诉我如何将模板标签作为变量阅读?
答案 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