A Django Template Tag that stashes content for dynamic reuse.
Project description
Django Stash Tag
A Django template tag that allows for markup to be stashed and dynamically applied without needing to create a separate partial or template tag file.
Installation
Install Django Stash Tag:
pip install django-stash-tag
After you've installed the tag, add django_stash_tag
to
INSTALLED_APPS
in your settings.py
file:
# settings.py
INSTALLED_APPS = (
# …
'django_stash_tag',
)
Static Usage
The stash
tag can be used to store static markup for reuse further
down the template. Using stash_apply
you can render the stashed
markup.
First we load the tag and stash the markup with a name to stash it under:
{% load stash %}
{% stash 'static_heading' %}
<h1>User: {{user.name}}</h1>
{% endstash %}
We then apply the stash with stash_apply
and provide the stash name
static_heading
as a tag argument:
{% stash_apply 'static_heading' %}
This would result in rendering (context.user
is {'name': 'Ivan'}
):
<h1>User: Ivan</h1>
Dynamic Usage
In most cases you probably need more dynamic control over the paramaterization of the stashed markup. You can accomplish such behavior through the use of template tag kwargs.
Again we load the tag and stash the markup. This time the context variables that are referenced within the stashed content are not defined in the template's context:
{% load stash %}
{% stash 'section_header' %}
<header>
<h3>{{title}} {{company}}</h2>
<small>{{subtext}} {{company}}.</small>
</header>
{% endstash %}
We then apply the stash with additional template kwargs pertaining to
the context variables referenced in the stashed content
(context.company
set to {'name': 'GitHub'}
):
{% stash_apply 'section_header'
title='About'
subtext='We will take you back to when it all began at'
%}
{# further down in the template #}
{% stash_apply 'section_header'
title='Apply for a Position at'
subtext='Make software development a better experience at'
%}
Which would then output:
<header>
<h3>About GitHub</h2>
<small>We will take you back to when it all began at GitHub.</small>
</header>
<!-- further down in template -->
<header>
<h3>Apply for a Position at GitHub</h2>
<small>Make software development a better experience at GitHub.</small>
</header>
As demonstrted above you can use stash_apply
as much as you
want once you've stashed the content in your template. You can use both
context variables already set on the template or dynamic variables set
though kwargs.
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
Hashes for django_stash_tag-19.3.0-py2-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e280246735c314010bbc479f216403946f07cae652a48c969c9269d6db817014 |
|
MD5 | 40a89ef2544f015526e322af5e6cc65c |
|
BLAKE2b-256 | f79aca52d9542b3d5e284cf8dd0e59deb35fd4b019e54da2b64b214bd5d231a4 |