A micro-library to capture output in Django templates
Project description
A micro-library to capture output in Django templates.
This can be useful for example to:
Repeat page titles in web pages, e.g. for the <title> tag and breadcrumb.
Repeat contents for Social Media tags.
Reusing thumbnail output in multiple places.
Fetch configuration data from extended templates.
Installation
Install the module from PyPI:
pip install django-capture-tag
Add the package to INSTALLED_APPS:
INSTALLED_APPS += (
'capture_tag',
)
Load the tag in your template:
{% load capture_tags %}
Syntax
The following options are available:
{% capture %}...{% endcapture %} # output in {{ capture }}
{% capture silent %}...{% endcapture %} # output in {{ capture }} only
{% capture as varname %}...{% endcapture %} # output in {{ varname }}
{% capture as varname silent %}...{% endcapture %} # output in {{ varname }} only
Example usage
To capture Social Media tags:
{% load capture_tags %}
<head>
...
{# Allow templates to override the page title/description #}
<meta name="description" content="{% capture as meta_description %}{% block meta-description %}{% endblock %}{% endcapture %}" />
<title>{% capture as meta_title %}{% block meta-title %}Untitled{% endblock %}{% endcapture %}</title>
{# display the same value as default, but allow templates to override it. #}
<meta property="og:description" content="{% block og-description %}{{ meta_description }}{% endblock %}" />
<meta name="twitter:title" content="{% block twitter-title %}{{ meta_title }}{% endblock %}" />
</head>
Take configuration from extended templates:
# base.html
{% load capture_tags %}
# read once
{% capture as home_url silent %}{% block home_url %}{% url 'app:index' %}{% endblock %}{% endcapture %}
# reuse twice.
<a href="{{ home_url }}" class="btn page-top">Back to home</a>
<a href="{{ home_url }}" class="btn page-bottom">Back to home</a>
# child.html
{% extends "base.html" %}
{% block home_url %}{% url 'user:profile' %}{% endblock %}
Notice
When a value is used only once, this package is not needed. In such case, simply place the {% block .. %} at the proper location where contents is replaced. All common Django template tags support the as variable syntax, such as {% url 'app:index' as home_url %} or {% trans "Foo" as foo_label %}.
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_capture_tag-1.0-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a996f64996830c00641b5b41503c62616f9613a478c84a303fc414e96bfb4891 |
|
MD5 | 9ff7dfc3c0b118c403e89172eaf5dc7c |
|
BLAKE2b-256 | 626fc00e3e52de91debfb09c1d197da0d229143047d4f2d81f9f1a6272d2b8f8 |