2

Mako テンプレートを使用して、Django Web サイトで可能な値 (「None」、「Little」、および「More」を含む) のリストから単語を表示しようとしています。3 つの単語のうち、実際にレンダリングされるのは 2 つだけです。'None' は None として解釈され、${variable} を呼び出すと空の文字列に変換されます。

トラブルシューティングで、mako テンプレートに実際に ${'None'} を記述すると、ブラウザーに空の文字列が返されることがわかりました。

この文字列を印刷するための mako テンプレートを取得する方法はありますか?

ありがとう!

4

1 に答える 1

3

Mako には、|演算子を使用してエスケープ フィルタを に適用するフィルタ システムがあります${}

構成がなければ、Mako はデフォルトでunicodeフィルターを暗黙的に使用します。default_filtersただし、引数を設定することで、Mako が使用するデフォルトのフィルタをいつでも変更できます。

nフィルタは、すべてのデフォルト フィルタリングを無効にします。ローカル式タグで指定されたフィルターのみが適用されます。

したがって、デフォルトでは、Makoは空の文字列ではなくとしてレンダリングする必要があります。フィルターを追加するときにのみ機能するという事実は、おそらく文字列を空の文字列にエスケープする他のフィルターに設定したことを示唆しています。修正されますが、使用する前に、コードのどこかに設定されているかどうかを確認するために、おそらくもう少し掘り下げる必要があります。${"None"}Nonendefault_filtersNonendefault_filters

警告:nフィルターは通常、ユーザー (Web サイトのユーザー) の入力に適用しないでください。エスケープしないと、XSS などのさまざまな攻撃に対して脆弱になるためです。

于 2012-10-02T19:19:09.420 に答える