2010-11-26 13 views
0

サーバーからJSONオブジェクトが返されました。それは次のようになります。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: {&quot;1&quot;:{&quot;id&quot;:&quot;1&quot;,&quot;name&quot;:&quot;autos&quot;},&quot;2&quot;:{&quot;id&quot;:&quot;2&quot;,&quot;name&quot;:&quot;business&quot;},&quot;3&quot;:{&quot;id&quot;:&quot;3&quot;,&quot;name&quot;:&quot;cities&quot;},&quot;4&quot;:{&quot;id&quot;:&quot;4&quot;,&quot;name&quot;:&quot;drama&quot;},&quot;5&quot;:{&quot;id&quot;:&quot;5&quot;,&quot;name&quot;:&quot;movies&quot;},&quot;6&quot;:{&quot;id&quot;:&quot;6&quot;,&quot;name&quot;:&quot;finance&quot;},&quot;7&quot;:{&quot;id&quot;:&quot;7&quot;,&quot;name&quot;:&quot;electronics&quot;}} 
<ul> 
</ul> 

をですから、私の{{interest}}変数は辞書として扱われないようです。しかし、なぜ ?それでは、私は文字列としてレンダリングされる親テンプレートにレンダリングされたリストを含めています(なぜなら、これは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: {&quot;1&quot;:{&quot;id&quot;:&quot;1&quot;,&quot;name&quot;:&quot;autos&quot;},&quot;2&quot;:{&quot;id&quot;:&quot;2&quot;,&quot;name&quot;:&quot;business&quot;},&quot;3&quot;:{&quot;id&quot;:&quot;3&quot;,&quot;name&quot;:&quot;cities&quot;},&quot;4&quot;:{&quot;id&quot;:&quot;4&quot;,&quot;name&quot;:&quot;drama&quot;},&quot;5&quot;:{&quot;id&quot;:&quot;5&quot;,&quot;name&quot;:&quot;movies&quot;},&quot;6&quot;:{&quot;id&quot;:&quot;6&quot;,&quot;name&quot;:&quot;finance&quot;},&quot;7&quot;:{&quot;id&quot;:&quot;7&quot;,&quot;name&quot;:&quot;electronics&quot;}}\n\n<ul>\n \n</ul>"} 

と、このコードをHTMLに挿入されたとき、それはちょうどひどいです:

http://img204.imageshack.us/img204/3858/listaxv.png

何ですか?なぜそれが文字列として正常にレンダリングされないのですが、いくつかの 'Content-type'ヘッダーが追加されますか?

+0

JSONオブジェクトを取得してコンテキストに渡すコードを表示してください。まず –

答えて

0

テンプレート変数interestsはjsonレスポンスの文字列にすぎません。文字列はテンプレート内でエスケープされます。そのため、すべてが"になります。サーバーからの応答が正しく解析されているかどうかを確認します。

タイプを確認するには、タイプクラス(type(ResultDict))を使用します。

+0

私のjsonは文字列として解釈されました。だから私はjsonモジュールでそれを読んでいる。次のことは、私が理解できない理由から、request.is_ajax()は常に真であり、純粋な文字列の代わりにそれぞれの場合にHTTPResponseを取得していたからです。 – mastodon

0

レスポンスをJSオブジェクトに変換するために、$ parseJSON(string)やeval(string)などのレスポンスをコンバートしますか?

関連する問題