从django模板获取序列化的json对象?

时间:2012-02-09 16:23:11

标签: python django json

我需要澄清一下。例如,如果我使用序列化对象执行视图:

def sample(request):
    res = [{'name':'man'}]
    encoded = json.dumps(res)
    return render_to_response('sample/example.html',{'encoded':encoded} )

在我的模板中,我通过了:

{{encoded}}

现在我可以从python脚本中做到:

data = json.loads(urllib2.urlopen(url/to/site).read()

它表示ValueError:无法解码JSON对象。但是{{encoded}}不是json对象吗?如果是这样,我怎么能得到它?

谢谢

2 个答案:

答案 0 :(得分:8)

在模板中尝试此操作:

{% autoescape off %} 
  {{ encoded }}
{% endautoescape %} 

答案 1 :(得分:1)

你可能会发现有些引号会被Django转义。最近我和Jinja2模板有类似的问题。在我的例子中,JSON进入了一个HTML数据属性,并且不正确地逃避了。在我使用过滤器标记它是安全的之后,它停止了转义引号并且引号不匹配。解决方案是

{% set dbl_quote='"' %}
{{ encoded |replace(dbl_quote, '"') |safe}}

但在Django中可能会有所不同。

如果您将其直接转换为Javascript等,则可能需要使用{% autoescape off %}或类似的东西。