これはより一般的な python の質問ですが、Django のコンテキストではもう少し複雑になります。
私はこのような単純化されたテンプレートを持っています:
<span class="unit">miles</span>
要素をjqueryとajaxに置き換えています:
$.getJSON('/getunit/', function(data){
$('#unitHolder').html(data.unit_html);
});
ビュー関数に移動して、json データ (このテンプレート以外のデータ) を取得します。だから、単なる文字列ではなく、json として提供したかったのです。したがって、関連するコードは次のとおりです。
...
context = { 'qs' : queryset }
data['unit'] = render_to_string('map/unit.html', context)
data = str(data).replace('\'','"') #json wants double quotes
return HttpResponse(data, mimetype="application/json")
これは、エスケープされていない二重引用符が含まれているため、他のすべてのデータでは機能しますが、テンプレートでは機能しません。私の質問は、python で文字列をエスケープして json 形式で使用するにはどうすればよいですか? render_to_string() は文字列を Unicode でレンダリングすることに注意してくださいu"<span>...</span>"
。
私はもう試した
import json
data['unit'] = json.dumps(render_to_string('map/unit.html', context))
しかし、それは私に与えます"unit": ""<span class=\\"unit\\">miles</span>""
。
また:
data['unit'] = str(render_to_string('map/unit.html', context)).replace('"','\"')
と:
data['unit'] = str(render_to_string('map/unit.html', context)).replace('"','\\"')
しかし、どちらも二重引用符を適切にエスケープしません。