Python django中是否有任何模板标记用于进行ast.literal\u评估?
django中是否有任何模板标记或解决方法可以在模板中生成Python django中是否有任何模板标记用于进行ast.literal\u评估?,python,django,django-templates,Python,Django,Django Templates,django中是否有任何模板标记或解决方法可以在模板中生成ast.literal\u eval(some\u str) 我应该创建一个新的模板标签来实现这一点吗?在这种情况下,模板标签会是什么样子 我提问的原因可以在这里找到否 为什么会有这样一个特定的标签,为什么会使用它 你可以很容易地添加一个 # file: literal_eval.py import ast def literal_eval(value): return ast.literal_eval(value) fro
ast.literal\u eval(some\u str)
我应该创建一个新的模板标签来实现这一点吗?在这种情况下,模板标签会是什么样子
我提问的原因可以在这里找到否
为什么会有这样一个特定的标签,为什么会使用它
你可以很容易地添加一个
# 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,然后将其传递给模板
更好的是重新思考正在做的事情,保存dictrepr
不是序列化的方式,使用literal\u eval
不是反序列化dict的方式,使用json.dumps
或类似格式将dict放入数据库,并使用json.loads
将其转换回dict。您也可以使用pickle,但我不推荐使用它。否
为什么会有这样一个特定的标签,为什么会使用它
你可以很容易地添加一个
# 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\u eval
不是反序列化dict的方式,使用json.dumps
或类似的格式将dict放入数据库,并使用json.loads
将其转换回dict。您也可以使用pickle,但我不推荐使用它。在我的问题中问了您的问题对不起,我说了一些愚蠢的话:)这就是原因:@jperelli您做得不对,您不应该在templateOk中执行此操作,谢谢大家。我只是在处理这个数据库,这就是数据的存储方式(很糟糕,但我收到的是这样的数据,我必须处理它)。我将尝试“重构”数据,使其成为JSON或BSON。在我的问题中问你问题时,对不起,我说了一些愚蠢的话:)这就是原因:@jperelli你做得不对,你不应该在templateOk中这样做,谢谢大家。我只是在处理这个数据库,这就是数据的存储方式(很糟糕,但我收到的是这样的数据,我必须处理它)。我将尝试“重构”数据,使其成为JSON或BSON。