2012-06-26 11 views
7

Estoy aprendiendo pirámide y parece que están tratando de hacer que la gente use camaleón en lugar de mako, así que pensé en darle una oportunidad al camaleón. Me gusta hasta ahora y puedo hacer cosas básicas en la plantilla, como por ejemplo si y para bucles, pero no estoy seguro de cómo hacer que aparezcan los flashes de los mensajes.¿Cómo puede mi plantilla de camaleón aceptar flashes de mensajes desde el marco de la pirámide?

En el tutorial de pirámides lo hacen en un todo list pero en el ejemplo wiki no lo hacen. De acuerdo con instructions about sessions y usando el tutorial de todolist como ejemplo, he podido hacer que mi aplicación cree mensajes, pero no puedo recibirlos en mi plantilla. En pocas palabras, me pregunto si camaleón tiene un equivalente de este código mako:

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

[no existe tal preferencia] (https://groups.google.com/d/msg/pylons-discuss/enal9DcMiAM/T_b4Zoe1crMJ) – Tshepang

Respuesta

10

El (no probado) equivalente en Chameleon es:

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

El tal:omit-tag attribute es opcional; deja caer la etiqueta <span> de la salida, ya que solo se utiliza como etiqueta ficticia para adjuntar la repetición. Al soltarlo, la salida de la plantilla de Camaleón coincidirá con el ejemplo de Mako.

Consulte el Chameleon documentation para obtener una introducción y una especificación completa de cómo funciona el lenguaje de plantilla.

+0

Si un usuario aún no ha accedido a su sitio, el acceso de '' solicitud .session'' creará automáticamente una sesión. Si bien esto puede no ser un problema, significa que si solo unos pocos usuarios tendrán sesiones (por ejemplo, solo administradores), entonces agregará sobrecarga innecesaria a su servidor y a sus clientes que pueden/nunca tendrán una sesión. Si esto le preocupa, mi sugerencia es verificar '' 'session' en vars (request) '' antes de hacer referencia '' request.session''. – davidjb

Cuestiones relacionadas