2012-10-31 33 views

回答

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字典”,在这种情况下,模板不是执行它的地方,首先将文本转换为字典,然后将其传递给模板。

,更好地重新思考正在做什么,节约字典repr不是序列化的方式,并使用literal_eval不是反序列类型的字典,使用json.dumps或这样的格式把词典到数据库,并使用json.loads转换的方式它回到字典。你也可以使用泡菜,但我不会推荐它。

+0

问你的问题在我的问题 – jperelli

+0

对不起,我说了一些愚蠢的:)这是原因:http://stackoverflow.com/questions/13165479/how-to-deserialize-a-python-printed-dictionary – jperelli

+2

@ jperelli你不正确的做法,你不应该这样做在模板 –

相关问题