django 中是否有任何模板标签或解决方法可以ast.literal_eval(some_str)
在模板中制作?
我应该创建一个新的模板标签来做到这一点吗?在这种情况下,该模板标签将如何?
我问的原因可以在这里找到如何反序列化python打印的字典?
django 中是否有任何模板标签或解决方法可以ast.literal_eval(some_str)
在模板中制作?
我应该创建一个新的模板标签来做到这一点吗?在这种情况下,该模板标签将如何?
我问的原因可以在这里找到如何反序列化python打印的字典?
不
为什么会有这样一个特定的标签,为什么会使用它?
您可以轻松添加一个
# 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,然后将其传递给模板。
最好还是重新考虑正在做的事情,保存字典repr
不是序列化的方法,使用literal_eval
不是反序列化字典的方法,使用json.dumps
或这种格式将字典放入数据库并用于json.loads
将其转换回字典。你也可以用泡菜,但我不推荐它。