2012-01-31 9 views
6

Ho seguito lo standard this URL per aiutarmi a creare visualizzazioni di template utilizzando BrowserView. Finora, funziona bene e sono in grado di creare un modello con una classe di visualizzazione.Plone 4: passaggio degli argomenti per visualizzare la classe (BrowserView)

cosa ho bisogno di sapere è se è possibile passare argomenti ai metodi all'interno della cioè vista della classe

from Products.Five import BrowserView 

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

ho bisogno di aggiungere un argomento in più per la funzione e processo è still_dreaming all'interno della funzione come questa :

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

Quindi ho bisogno di chiamare la funzione e passare un argomento ad esso dal mio modello. Qualcosa del genere:

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

Sfortunatamente, non conosco il modo corretto di passare argomenti al metodo. Qualsiasi suggerimento sarà molto apprezzato.

MODIFICA: item/publication_date è solo una variabile e potrebbe essere qualsiasi cosa. È stato appena definito in precedenza.

risposta

7

Sì.

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

È possibile utilizzare la sintassi TAL attraversamento (di default), la sintassi di Python o la sintassi stringa nelle espressioni TAL.

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

+0

Ottenuto lo stesso. Ma ho letto da qualche parte su Internet che fare "python:" nelle viste è sbagliato ... Quindi, a volte, sono un po 'confuso. – Jihaisse

+2

python: è un errore nel senso che in passato non ci sono classi di visualizzazione e tutto il codice è stato inserito nei template, creando un pasticcio di HTML e un pitone di linea –

+1

Ora puoi mettere complessi loop Python e funzioni in real .py file e Visualizza classe –

Problemi correlati