3

私はMakoテンプレートを使用してPylonsの下で開発しています。問題は、tmpl_contextの属性からページ本文のJavaScript変数に文字列を割り当てる必要があることです。追加の問題は、この文字列が非常に任意である可能性があることです。つまり、「、」、<、>などの文字を含めることができます...このような割り当てを行う一般的な方法はありますか?私は次のようなものを試しました:

<script>
    ...
    var a = "${c.my_string}";
    ...
</script>

しかし、引用符とHTML特殊文字がエスケープされます。ただし、予期しないコードが実行される危険性があるため、フィルタリングを無効にしたくありません。

4

2 に答える 2

2

c.my_string に任意のデータがあるため、"|n" を使用したくありませんよね?

JS スタイルのエスケープでそれをエスケープする最も簡単な方法は、

var a = ${c.my_string.__repr__()|n}; # Note lack of "" around it! 

<>ただし、文字については不明です(</script>挿入されたようなものがあります)。おそらく、あなたも使用したいでしょう.replace('<', '&lt;');

Unicode の場合、文字列の先頭から「u」文字も削除する必要があります。

于 2010-08-01T15:33:30.453 に答える
1

あなたが何を望んでいるのか理解できたら、試してみてくださいwebhelpers.html.literal

ヘルパー:

from webhelpers.html import literal

html:

<script>
    document.write('${h.literal(c.my_string)}');
</script>

${c.mystring|n}これはhtmlをエスケープするよりも優れています

于 2010-08-01T15:14:08.933 に答える