django中有任何模板标签可以制作ast.literal_eval吗?

时间:2012-10-31 18:53:38

标签: python django django-templates

django中是否有模板标记或解决方法在模板中制作ast.literal_eval(some_str)

shoud我创建了一个新的模板标签来做到这一点?在这种情况下,该模板标签怎么样?

我可以在how to deserialize a python printed dictionary?

找到我要求的原因

1 个答案:

答案 0 :(得分:4)

没有

为什么会有这样一个特定的标签以及为什么要使用它?

您可以轻松添加一个

# file: literal_eval.py

import ast

def literal_eval(value):
    return ast.literal_eval(value)

from django import template
register = template.Library()
register.filter('literal_eval', literal_eval)

你可以在模板中使用它

{% load literal_eval %}

{{ some_str|literal_eval }}

现在导致问题“为什么?”你会对此做些什么?

编辑:OP说“他想反序列化一些保存为varchar的python dict”,在这种情况下,模板不是这样做的地方,首先将文本转换为dict,然后将其传递给模板

并且最好还是重新考虑正在做什么,保存dict repr不是序列化和使用literal_eval的方式不是反序列化dicts的方法,使用json.dumps等将dict放入数据库并使用json.loads将其转换回dict的格式。你也可以使用泡菜,但我不推荐它。