2012-01-31 14 views
6

He estado siguiendo this URL para ayudarme a crear vistas de plantillas usando BrowserView. Hasta ahora, funciona bien y puedo crear una plantilla con una clase de vista.Plone 4: Pasar argumentos para ver la clase (BrowserView)

Lo que necesito saber es si es posible pasar argumentos a los métodos dentro de la es decir, clase de vista

from Products.Five import BrowserView 

class Html(BrowserView): 
    def still_dreaming(self): 
     msg = "Some people are still dreaming" 
     return msg 

tengo que añadir un argumento adicional para la función still_dreaming y procesarla dentro de la función como esta :

def still_dreaming(self, some_arg): 
     msg = some_arg + " Some people are still dreaming" 
     return msg 

Luego necesito llamar a la función y pasarle un argumento desde mi plantilla. Algo como esto:

<p tal:content="view/still_dreaming(item/publication_date)"></p> 

Desafortunadamente, no sé la forma correcta de pasar argumentos al método. Cualquier puntero será muy apreciado.

EDITAR: item/publication_date es solo una variable y podría ser cualquier cosa. Se acaba de definir previamente.

Respuesta

7

Sí.

<p tal:content="python:view.still_dreaming(item.publication_date)" /> 

Usted puede utilizar la sintaxis TAL atravesar (por defecto), la sintaxis de Python o sintaxis de la cadena en las expresiones de TAL.

http://collective-docs.readthedocs.org/en/latest/functionality/expressions.html

+0

Consiguió lo mismo. Pero leí en algún lado en Internet que hacer "python:" en las vistas es malo ... Por lo tanto, a veces, estoy un poco confundido. – Jihaisse

+2

python: es malo en el sentido de que en el pasado no había clases de vista y todo el código estaba dentro de las plantillas, lo que lo convertía en un lío de pitones HTML y one liner –

+1

Ahora puedes poner complejos bucles y funciones de Python en .py reales archivo y clase de vista –

Cuestiones relacionadas