在django视图中,我生成了模板需要使用的JSON数据:
languages = { ... }
context = {
'languages': json.dumps(languages)
}
return render(request, 'template.html', context)
然后在模板中,而不是仅仅做var languages = {{languages}};
,我需要这样做,因为某些字符串可能会破坏javascript:
var languages = JSON.parse('{{languages|safe|escapejs}}');
哪个会输出像这样的混乱斑点:
var languages = JSON.parse('[{\u0022name_english\u0022: \u0022Afar\u0022, \u0022code\u0022: \u0022aa\u0022, \u0022name\u0022: \u0022Afar\u0022}, {\u0022name_english\u0022: \u0022Afrikaans\u0022, \u0022code\u0022:...
我真的很想在我的渲染模板中添加它:
var languages = [{"name_english": "Afar", "code": "aa", "name": "Afar"}, {"name_english": "Afrikaans", "code": "af", "name": "Afrikaans"}, {"name_english": "Akan", ...
但是正如我所说,有逃避的必要。有没有一种方法可以转义真正需要转义的字符串而不是整个JSON?谢谢
答案 0 :(得分:0)
尝试使用自动转义模板标签。
{% autoescape off %}
var languages = JSON.parse('{{languages}}');
{% endautoescape %}
答案 1 :(得分:0)
我发现此模板过滤器仅逃避了必要的https://github.com/yourcelf/escapejson
它将{'test': '</script>'}
渲染为{"test": "<\/script>"}