django中是否有模板标记或解决方法在模板中制作ast.literal_eval(some_str)
?
shoud我创建了一个新的模板标签来做到这一点?在这种情况下,该模板标签怎么样?
找到我要求的原因答案 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的格式。你也可以使用泡菜,但我不推荐它。