カメレオン紹介ページより:
デフォルトでは、文字列は挿入前にエスケープされます。これを避けるには、structure
: プレフィックスを使用します。
ただし、これはJavaScriptの値をエスケープしません。そのために JSON を使用します。あなたの見解では、以下を使用してください:
post_json = (json.dumps(post)
.replace(u'<', u'\\u003c')
.replace(u'>', u'\\u003e')
.replace(u'&', u'\\u0026')
.replace(u"'", u'\\u0027'))
HTML セーフなJSON 文字列を生成する。JSON (json.dumps()
少なくとも1によって生成される) は Javascript サブセットであり、ここでは HTML で危険な文字がエスケープされています ( Flaskjson.htmlsafe_dumps()
関数のおかげで)。
以下を使用して、それをテンプレートに補間しますstructure
。
<script type="text/javascript">
var initialComments = ${comments};
for (var i = 0; i < initialComments.length; i++) {
initialComments[i].userId = initialComments[i].user_id;
}
var post = ${structure:post_json};
// ...
</script>
1 JSON はU+2028 および U+2029 文字を許可しますが、json.dumps()
関数はデフォルトですべての非 ASCII コードポイントをエスケープします。