2012-01-31 6 views
6

Śledziłem this URL, aby pomóc mi utworzyć widoki szablonów za pomocą BrowserView. Do tej pory działa dobrze i jestem w stanie stworzyć szablon z klasą widoku.Plon 4: Przesyłanie argumentów do widoku klasy (BrowserView)

Co muszę wiedzieć, czy możliwe jest, aby przekazywać argumenty do metod wewnątrz IE widok klasy

from Products.Five import BrowserView 

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

muszę dodać dodatkowy argument do funkcji still_dreaming i przetwarza je wewnątrz funkcji jak ta :

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

Następnie muszę wywołać funkcję i przekazać do niej argument z mojego szablonu. Coś takiego:

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

Niestety, nie znam prawidłowego sposobu przekazywania argumentów do metody. Wszelkie wskazówki będą bardzo mile widziane.

EDYTOWANIE: item/publication_date to tylko niektóre zmienne i może być cokolwiek. Zostało to właśnie zdefiniowane wcześniej.

Odpowiedz

7

Tak.

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

Można użyć TAL poruszaniem składni (domyślnie), składni Pythona lub składni String w wyrażeniach TAL.

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

+0

Got to samo. Ale czytałem gdzieś w Internecie, że tworzenie "pythona:" w widokach jest złe ... Czasami jestem trochę zdezorientowany. – Jihaisse

+2

python: jest zły w tym sensie, że w przeszłości nie było żadnych klas widoku i cały kod został umieszczony wewnątrz szablonów, co spowodowało bałagan HTML i jeden pyton liniowy –

+1

Teraz możesz umieścić złożone pętle Pythona i funkcje w rzeczywistym .py plik i Wyświetl klasę –