2

これはより一般的な 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('"','\\"')

しかし、どちらも二重引用符を適切にエスケープしません。

4

1 に答える 1