2012-06-26 10 views
7

私はピラミッドを学んでいます。彼らはmakoの代わりにchameleonを使うようにしているようですので、私はchameleonにチャンスを与えると思っていました。私はこれまでのところ好きで、ifやforループのようなテンプレートの基本的なことを行うことができますが、メッセージの点滅を表示する方法がわかりません。私のカメレオンテンプレートはピラミッドフレームワークからのメッセージの点滅を受け入れることができますか?

ピラミッドチュートリアルでは、todo listでこれを行いますが、wikiの例ではありません。 instructions about sessionsによれば、例としてtodolistチュートリアルを使用して、私のアプリにメッセージを作成させることができましたが、テンプレートで受け取ることができません。一言で言えば、カメレオンこのマココードと同等のものを持っている場合、私は思ったんだけど:

% if request.session.peek_flash(): 
    <div id="flash"> 
    <% flash = request.session.pop_flash() %> 
    % for message in flash: 
    ${message}<br> 
    % endfor 
    </div> 
    % endif 
+0

[このような設定はありません](https://groups.google.com/d/msg/pylons-discuss/enal9DcMiAM/T_b4Zoe1crMJ) – Tshepang

答えて

10

当量(未テスト)をカメレオンにすることである:

<div id="flash" tal:condition="request.session.peek_flash()"> 
    <span tal:omit-tag="" 
     tal:repeat="message request.session.pop_flash()"> 
     ${message}<br> 
    </span> 
</div> 
tal:omit-tag attribute

は任意です。リピートを付加するダミータグとしてのみ使用されるため、出力から<span>タグを削除します。それを削除することで、カメレオンのテンプレートの出力がMakoの例に一致します。

テンプレート言語の仕組みの概要と完全な仕様については、Chameleon documentationを参照してください。

+0

ユーザーがあなたのサイトにまだアクセスしていない場合は、 .session''は自動的にセッションを作成します。これは問題ではないかもしれませんが、少数のユーザーしかセッションを持たない場合(例えば、管理者のみ)、サーバーやクライアントに不要なオーバーヘッドが追加されることになります。これが心配な場合は、私が提案しているのは、vars(request)の '' session 'を '' request.session''を参照する前にチェックすることです。 – davidjb

関連する問題