【发布时间】:2011-05-16 03:42:27
【问题描述】:
我有一个从服务器返回的 JSON 对象。它看起来像这样:
{"1":{"id":"1","name":"autos"},
"2":{"id":"2","name":"business"},
"3":{"id":"3","name":"cities"},
"4":{"id":"4","name":"drama"},
"5":{"id":"5","name":"movies"},
"6":{"id":"6","name":"finance"},
"7":{"id":"7","name":"electronics"}}
所以我将模板呈现为包含我的 JSON 的字符串:
<h3>Ugly, raw list. Yuck !</h3>
1: {{ interests }}
<ul>
{% for k,v in interests.items %}
<li>{{k}}. - {{ v }}</li>
{% endfor %}
</ul>
template_name = 'socialauth/interests.html'
html = render_to_string(template_name, RequestContext(request, {'interests': ResultDict,}))
结果我得到了:
<h3>Ugly, raw list. Yuck !</h3>
1: {"1":{"id":"1","name":"autos"},"2":{"id":"2","name":"business"},"3":{"id":"3","name":"cities"},"4":{"id":"4","name":"drama"},"5":{"id":"5","name":"movies"},"6":{"id":"6","name":"finance"},"7":{"id":"7","name":"electronics"}}
<ul>
</ul>
所以看起来我的 {{interests}} 变量没有被视为字典。但为什么 ?更重要的是,现在我将渲染列表包含到父模板中,该模板也被渲染为字符串(因为我正在使用 ajax 加载它)。最终结果如下:
模板:
<div class="connect-twitter" style="background:#f8f8f8">
<div id="likes-list">
{{ likes|safe }}
</div>
<a href="#" class="submit-step-2">Proceed</a>
</div>
结果:
Content-Type: text/html; charset=utf-8
{"html": "<h3>Ugly, raw list. Yuck !</h3>\n\n1: {"1":{"id":"1","name":"autos"},"2":{"id":"2","name":"business"},"3":{"id":"3","name":"cities"},"4":{"id":"4","name":"drama"},"5":{"id":"5","name":"movies"},"6":{"id":"6","name":"finance"},"7":{"id":"7","name":"electronics"}}\n\n<ul>\n \n</ul>"}
当这段代码插入到 html 中时,它看起来很糟糕:
http://img204.imageshack.us/img204/3858/listaxv.png
什么鬼?为什么它没有正常呈现为字符串,而是添加了一些“Content-type”标头?
【问题讨论】:
-
请显示获取 JSON 对象并将其传递给上下文的代码。
标签: python html django json dictionary