jinja2:如何将字符串转换为字典对象?

5
我在数据库中存储了一个json字符串,当将其提取并显示在模板上时,它是一个字符串。我希望将其转换为字典对象,以便可以直接访问内容。
例如:
string = "{'a':1, 'b':3}"
{{ obj }} --> 字符串 "{'a':1, 'b':3}"
{{ obj.b }} --> 我想像访问对象一样访问它。

1
导入 json 模块(https://docs.python.org/2/library/json.html)? - bereal
@bereal 不是,我正在寻找一种过滤器,可以将字符串转换为一个对象,以便在jinja模板中访问。 - user299709
您可以在Jinja中使用任何Python表达式或注册自己的过滤器。 - bereal
你为什么想要在模板中完成这个任务,而不是在从数据库加载值的视图中完成? - dirn
2个回答

0

2
应该是fromjson吧? - undefined
这似乎是将一个对象转换为字符串,而不是将字符串转换为对象,这似乎不是所要求的。所以,这不会起作用。 - undefined

-6

请将以下代码写入临时文件并编写一个后端函数:

{{ obj.b | str_to_obj }}

请在您的Jinja过滤器文件中添加以下代码:
for convert str to dic object 

def str_to_obj(str):

    return eval(str)

在您的管理文件中编写以下代码:

app.jinja_env.filters['str_to_obj'] = jinja_filters.str_to_obj

eval() 被认为是一种不良的编程实践,因为它允许用户动态执行任意的 Python 代码,因此会被投反对票。请参见 https://dev59.com/dXI-5IYBdhLWcg3weoTR。 - frainfreeze

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接