Django, oblíbený framework pro vývoj webových aplikací v Pythonu, nabízí rozsáhlé možnosti pro práci s šablonami. Kromě standardních tagů a filtrů můžete v Django vytvářet vlastní, které vám umožní zefektivnit a zpřehlednit kód šablon. Tento článek vás provede základy vytváření a používání vlastních tagů a filtrů ve vašich Django projektech.
Základy šablonového systému Django
Než se ponoříme do vytváření vlastních tagů a filtrů, je důležité pochopit základy šablonového systému Django. Šablony v Django jsou způsob, jak dynamicky generovat HTML. Systém šablon používá tagy, které vám umožňují provádět logiku přímo ve vašich šablonách, a filtry, které slouží k úpravě proměnných šablon před jejich zobrazením uživateli.
Vytváření vlastních tagů a filtrů
Pro vytvoření vlastních tagů a filtrů musíte nejprve vytvořit modul Pythonu uvnitř vaší aplikace, obvykle pojmenovaný templatetags
. Django tento modul vyhledá, aby našlo vaše vlastní tagy a filtry.
-
Vytvoření modulu templatetags
Vytvořte adresář s názvem templatetags
ve vaší aplikaci a přidejte do něj soubor __init__.py
, aby byl adresář považován za Python modul. Poté vytvořte Python soubor pro vaše vlastní tagy a filtry, například my_custom_tags.py
.
-
Registrace vlastních tagů a filtrů
V souboru s vlastními tagy a filtry musíte nejprve importovat template
z Django a vytvořit instanci Library
, která se používá k registraci vašich tagů a filtrů.
from django import template
register = template.Library()
-
Existují dva základní typy vlastních tagů: jednoduché tagy a inkluzivní tagy. Jednoduché tagy zpracovávají data a vracejí řetězec, který se vloží do šablony, zatímco inkluzivní tagy mohou renderovat celé šablony s kontextem.
-
Jednoduchý tag:
@register.simple_tag
def my_simple_tag(a, b):
return a + b
-
Inkluzivní tag:
@register.inclusion_tag('my_template.html')
def my_inclusion_tag():
return {'key': 'value'}
-
Vytváření vlastních filtrů
Filtry se používají k úpravě hodnot v šablonách. Pro vytvoření filtru použijte dekorátor filter
.
@register.filter
def my_custom_filter(value, arg):
return value.replace(arg, '')
-
Používání vlastních tagů a filtrů ve šablonách
Aby bylo možné vaše vlastní tagy a filtry používat ve šablonách, musíte je nejprve načíst pomocí tagu {% load %}
.
{% load my_custom_tags %}
{{ some_variable|my_custom_filter:"argument" }}
{% my_simple_tag 1 2 %}
Vytváření vlastních tagů a filtrů v Django vám umožní výrazně rozšířit funkčnost šablonového systému a přizpůsobit jej specifickým potřebám vašeho projektu. S trochou praxe a experimentováním můžete dosáhnout velmi efektivních a čistých řešení pro vaše webové aplikace.