Python django中是否有任何模板标记用于进行ast.literal\u评估?

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

django中是否有任何模板标记或解决方法可以在模板中生成
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,然后将其传递给模板

更好的是重新思考正在做的事情,保存dict
repr
不是序列化的方式,使用
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。