Własne znaczniki w szablonach


15 kwietnia 2012


Przykład tworzenia znaczników i ich użycia w systemie szablonów Django.

Django wykorzystuje zasadę DRY. Możemy z niej skorzystać w systemie szablonów tworząc własne tagi. Aby to zrobić musimy w aplikacji stworzyć folder templatetagsa w nim dwa pliki:

- __init__.py (Python traktuje wtedy katalog jako pakiet zawierający moduły)

- aktualnosci.py (nasz moduł zawierający definicję nowego znacznika)

W pliku "aktualnosci.py" tworzymy nowy znacznik:

from django import template
from python.restauracja.models import aktualnosci

register = template.Library()
def aktualnosci_kontener():
    aktualnosci_lista = aktualnosci.objects.all().order_by('-id')[:5]
    return {'aktualnosci_lista': aktualnosci_lista} 

register.inclusion_tag('aktualnosci_kontener.html')(aktualnosci_kontener)

Następnie w szablonie ładujemy nasz moduł:

{% load aktualnosci %}

oraz używamy nowostworzonego znacznika:

{% aktualnosci_kontener  %}

W powyższym przykładzie zarejestrowaliśmy znacznik, który używa własnego szablonu "aktualnosci_kontener.html". Uczyniliśmy to poprzez użycie funkcji "inclusion_tag". Wywołując funkcję Library() sprawiamy, że zwykłe funkcje są rozumiane jako znaczniki.

Jeżeli znacznik nie używa własnego szablonu możemy go zarejestrować w następujący sposób (np. wykorzytując specjalny dekorator):

from django import template
register=template.Library()

@register.simple_tag()

def test():
    return "Wartosc zwracana przez nowy znacznik"

Możemy także zamiast dekoratora użyć metody simple_tag.  

Co zawiera blog?

Na blogu umieszczam wpisy dotyczące mojej pracy, zainteresowań. Głowna tematyka to programowanie oraz recenzje płyt oraz książek.

Wieczne Blue Lines


Artwork: Michael Nash, 3D-Del Naja
Ćwierćwiecze jednej z najważniejszych płyt ...

Haystack, Whoosh i błąd


Wyszukiwanie pełnotekstowe w Django z wykorzystaniem Haystack oraz Whoosh a ...

Ray Bradbury - 451° Fahrenheita


Czytasz książki? Lepiej zacznij!

The Avalanches - Since I Left You


Od zawsze fascynowała mnie muzyka tworzona przy użyciu "czarnych krążków" ...

Raport sportowy #8


Zdjęcie: Luke Stackpoole, Unsplash

Twórzmy aplikacje wspólnie!


Grzegorz Tatara "Koma Software" - Tworzymy nowoczesne, bezpieczne oraz użyteczne ...