Skip to main content

Contains template tags for mixins (in this case, local-template repeatable functions) and components (a separate file that has slots that can be replaced).

Project description

https://img.shields.io/pypi/v/django-template-mixins.svg

A template filter that allows you to define and use mixins.

Installation

In your Django project, run:

pip install django-template-mixins

and add mixin_templatetag to your INSTALLED_APPS setting:

INSTALLED_APPS = [
  ...,
  'mixin_templatetag'
]

and from there you can use it as follows:

{% load mixins %}

{% mixin foo %}
    <div>
        <div>{{ name }}</div>
        <div>{{ description }}</div>
    </div>
{% endmixin %}

{% block content %}
...
{% mix foo with name="hello" description="world" %}
...
{% endblock %}

If you want to use components instead, note that the feature is EXPERIMENTAL + there is a restriction that components can’t extend or include another file.

Here’s an example of using components:

component.html:

<body>
    {% slot foo %}
    <div>DEFAULT_FOO{{ some_var }}</div>
    {% endslot %}


    {% slot bar %}
    <div>DEFAULT_BAR</div>
    {% endslot %}
</body>

content.html:

{% component 'component.html' with some_var=':(' %}
    {% slot bar %}
        my way
    {% endslot %}
{% endcomponent %}

Why django-template-mixins?

Currently in Django, if you want to repeat a block multiple times in separate blocks / areas in the same block, you have to create a separate file. The worst part is that these extracted bits of template tend to be single purpose - you aren’t likely to need it anywhere else besides that first template.

Mixins allow you to keep things in one place and allows you to avoid DRY.

I added in components (EXPERIMENTALLY) to the mix because it was requested, and after thinking about it for awhile it seemed like a useful feature that I would also want. From my basic tests it seems to work.

Reporting bugs

You can report bugs in https://github.com/benlei/django-template-mixins/issues.

If you believe you’ve found a bug, please try to identify the root cause and write up some sample code on how to reproduce it.

Author

Benjamin Lei

Contributors:

  • xblitz

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-template-mixins-0.3.1.tar.gz (8.6 kB view hashes)

Uploaded Source

Built Distribution

django_template_mixins-0.3.1-py3-none-any.whl (8.0 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page