Po pierwsze, nawet w drugim przykładzie, należy zrobić:
<a href="{{=URL('vote', args=['up', item.id])}}">
<img src="{{=URL('static', 'up.png')}}"/></a>
Zawsze używaj URL()
pomocnika napisać adresy URL, nawet w poglądach. Zajmuje się przepisywaniem wychodzących i zna bieżącą aplikację (i kontroler), więc nie musisz ich uwzględniać (co oznacza, że jeśli zmienisz ich nazwy, wszystkie URL-e nadal będą działały). Ponadto nie ma już potrzeby określania request
ani używania słów kluczowych c
i f
(reddish to stara aplikacja).
Jeśli chodzi o pomocników, ogólną zasadą jest użycie ich na wypadek, gdyby trzeba było utworzyć lub zmodyfikować kod HTML w kontrolerze, modelu lub module, ale aby używać zwykłego znacznika HTML (zmieszanego z Pythonem, tak jak w drugim przykładzie) w widokach. Jedynym wyjątkiem jest wtedy, gdy trzeba zbudować złożoną strukturę HTML w widoku. W takim przypadku łatwiej będzie manipulować pomocnikami w jednym bloku kodu Python, zamiast mieszać zwykłe znaczniki HTML z Pythonem. Na przykład, jeśli masz dane w liście słowników (z klawiszami F1 ",„F2”," F3) i chcesz utworzyć tabelę HTML, można zrobić:
{{=TABLE([TR(row['f1'], row['f2'], row['f3']) for row in rows])}}
Można zrobić to samo zmieszanie HTML i Python, ale byłoby to o wiele dłuższe i bardziej chaotyczne.
Inną ważną zaletą pomocników jest to, że tworzą one server-side DOM, które można modyfikować w kodzie Pythona. Pomocnicy, których najprawdopodobniej utworzysz w swoim kodzie modelu/kontrolera, to formularze (przez FORMULARZ, SQLFORM, Crud i system Auth) i tabele (przez SQLTABLE, SQLFORM.grid i Crud). Sami pomocnicy ci zawierają inne pomocniki, takie jak tabele, divy i ul, i można nimi manipulować po stronie serwera przed serializacją do kodu HTML (for example).
Ponadto, niektóre z pomocnicy mają szczególne cechy, które dodają funkcjonalność lub ułatwić ich używać:
A
: jak <a></a>
, ale również zajmuje szczególne argumenty do obsługi wywołań zwrotnych Ajax.
HTML
: Automatycznie przedłuża ciąg znaków doctype.
INPUT
, OPTION
: Weź specjalny value
argumentu, aby ustawić aktualną wartość i automatycznie obsłużyć ustawiania checked
i selected
atrybuty, odpowiednio.
OL
, UL
, SELECT
, TR
, TBODY
: Podobnie jak ich odpowiedniki HTML, z wyjątkiem one automatycznie konwertować un nazwie argumenty (lub elementy listy/krotki), które nie są pomocnicy do odpowiednich elementów podrzędnych (tj <li>
, <option>
, <td>
i <tr>
, odpowiednio). (Przykład tabeli powyżej korzysta z tego faktu - w TR()
automatycznie konwertuje poszczególne elementy w oddzielnych TD
„s.)
Wreszcie, istnieje pewna liczba pomocników, które specjalizuje się funkcjonalność:
BEAUTIFY
: Tworzy reprezentację HTML złożonych obiektów.
CODE
: Alternatywa dla <pre></pre>
, która automatycznie obsługuje wyróżnianie kodu i numerowanie linii dla kilku języków programowania.
MARKMIN
: Konwertuje kod markmin na HTML.
MENU
: Tworzy zagnieżdżone ul z zagnieżdżonej listy krotek.
TAG
: Generator tagów uniwersalnych i analizator składni HTML.
XML
: Enkapsuluje tekst, który nie powinien być zmieniony lub powinien zostać oczyszczony.
Aby uzyskać więcej informacji, patrz helpers documentation.
To było świetne wyjaśnienie. Dziękuję Ci bardzo :) –