4

テンプレート エンジン「chameleon」を使用して、Python Web フレームワーク「Pyramid」でプロジェクトを開始しました。

私はこのフレームワークの初心者ですが、顧客のために使用する必要があります。

フレームワークをインストールするための手順に従い、トレーニング目的でコーディングを開始しました。

私の最初のアプリケーションは、愚かで単純な CRUD アプリケーションでした。

私がやっていることは次のとおりです。

私の__init__.py場合、ビューごとに次のコードがあります。

config.add_view('myenglishdictionary.views.modify',route_name='modify_route',renderer='templates/base.pt')

base.pt は、ヘッダーとフッターを含むメイン テンプレートと、次のコードを含む div です。

<div>${body}</div>

私のファイルview.pyには、各ビューに次のような2行があります。

body = render('templates/list.pt',{'list':list ,'project':'myProject'}, request=request)
return {'body':body}

私のlist.ptには、base.ptに埋め込まれるコンテンツがあります

すべてうまくいったようです。しかし、ライブラリの更新後、テンプレートが正しく表示されなくなりました。

実際の html コードの代わりに、html エンティティがあります。

 &lt;div class="clear"&gt;&lt;/div&gt;

そのため、明らかにページの見栄えがよくありません。

base.pt テンプレートの html が正しく表示されていることから、問題は render メソッドにあるようです。

4

1 に答える 1

6

構文を使用すると${}、デフォルトで含まれるテキストがエスケープされます (XSS インジェクション攻撃に対する防御に役立ちます)。

代わりに、structure:プレフィックスを使用してレンダリング エンジンにテキストをエスケープしないように指示します。

<div>${structure: body}</div>
于 2011-10-14T14:33:18.897 に答える