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.0-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 53b1a0a4095958f6874cfe0a4df74e15587d85a0248be588009e23aa0fdba3bd |
|
MD5 | cfca523377b41556adc67e4b25d8ba96 |
|
BLAKE2b-256 | 978d57705da1373628a659f161e1e8c7461f1e60900cf9eab95dae792f73bbe8 |