3

ピラミッドフレームワークを使用して、大規模なWebアプリケーションを構築しました。

特に、このアプリケーションを使用すると、ユーザーはテキスト領域のフォームフィールドにテキストを入力できます。このテキストはデータベースに保存され、もちろん再度読み取って後で表示することができます。

コンテンツを表示するには、ChameleonTemplateEngineを使用しています。

これは、改行が正しく表示されない(まったく表示されない)ことを除いて、正常に機能します。これはおそらく、テキスト領域に入力された改行が、カメレオンを介して表示されたときにHTMLで新しい行を引き起こさないという事実によるものです。どうすればこれを修正できますか?

<br>デフォルトではChameleonはすべてのHTMLタグをエスケープするため、改行を-Tagに置き換えることは役に立ちません。この機能を無効にできることは承知していますが、クロスサイトスクリプティングを避けるために無効にしたくありません。

4

2 に答える 2

2

テキストを別々の行に分割してから、ループと<br/>タグを使用してこれをレンダリングする必要があります。

<span tal:omit-tag="" 
      tal:repeat="line text_with_newlines.splitlines()">
  ${line}<br />
</span>

これは、str.splitlines()メソッドを使用してテキストを改行で分割し、ループは<br />テキストの各行の後にブレークタグを追加します。

ビューでこれを行わず、フラグ<br />を設定して、挿入されたタグをカメレオンに受け入れさせるのはまったく正しいことです。structure:幸いなことに、とにかくその必要はまったくありません。

于 2013-02-23T21:07:21.597 に答える
2

もう1つの可能性は、次のようなことを行うことです。

import webhelpers.html.tags as t
s = t.literal(t.BR).join(s.split(t.NL))

もちろん、そこからヘルパー関数を作成することもできます。

于 2013-02-24T11:38:46.130 に答える