Base classes for quick-and-easy template tag development
Project description
jinja2-simple-tags
Base classes for quick-and-easy template tag development
Compatibility
python
>= 3.6Jinja2
>= 2.10
Installation
pip install jinja2-simple-tags
Examples
StandaloneTag
from django.utils.timezone import now
from django.utils.formats import date_format
from jinja2_simple_tags import StandaloneTag
class NowExtension(StandaloneTag):
tags = {"now"}
def render(self, format_string='DATETIME_FORMAT'):
return date_format(now(), format_string)
Usage:
{% now %} {# 7th July 2020, 10:07 a.m. #}
{% now "Y-m-d" %} {# 2020-07-07 #}
ContainerTag
from django.core.cache import cache
from django.utils.encoding import force_str
from django.core.cache.utils import make_template_fragment_key
from jinja2_simple_tags import ContainerTag
class CacheExtension(ContainerTag):
tags = {"cache"}
def render(self, fragment_name, *vary_on, timeout=None, caller=None):
cache_key = make_template_fragment_key(fragment_name, vary_on)
value = cache.get(cache_key)
if value is None:
value = caller()
cache.set(cache_key, force_str(value), timeout)
else:
value = force_str(value)
return value
Usage:
{% cache "footer", request.path, timeout=3600 %}
<footer>
...
</footer>
{% endcache %}
Context
Current context is available through the self.context
.
from django.urls import reverse
from jinja2_simple_tags import StandaloneTag
class AbsoluteURITag(StandaloneTag):
tags = {'absolute_uri'}
def render(self, name):
request = self.context['request']
url = reverse(name)
return request.build_absolute_uri(url)
Assignment
Both StandaloneTag
and ContainerTag
comes with out-of-the-box
support for assignment.
Usage:
{% now "Y-m-d" as today %}
...
{{ today }} {# 2020-07-07 #}
{% cache "footer", request.path, timeout=3600 as footer %}
<footer>
...
</footer>
{% endcache %}
...
{{ footer }}
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Close
Hashes for jinja2_simple_tags-0.4.1-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6b44d361df5533670496c4491a5e3e9496f9ce0447347f145c17121627575101 |
|
MD5 | 6f6334ce401d69053ff85666cb60973c |
|
BLAKE2b-256 | d3a47a0f5dcb88e42a7bacae93b600b8d0e5e68e26283586aafb1c81b6ddbe4a |