Metadata-Version: 2.1
Name: django-template-mixins
Version: 0.3.1
Summary: Contains template tags for mixins (in this case, local-template repeatable functions) and components (a separate file that has slots that can be replaced).
Home-page: https://github.com/benlei/django-template-mixins
Author: Benjamin Lei
License: BSD
Project-URL: Source, https://github.com/benlei/django-template-mixins
Keywords: django template templatetag mixin component slot
Platform: UNKNOWN
Classifier: Environment :: Web Environment
Classifier: Framework :: Django
Classifier: Framework :: Django :: 2.0
Classifier: Framework :: Django :: 2.1
Classifier: Framework :: Django :: 2.2
Classifier: Framework :: Django :: 3.0
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Topic :: Utilities
Requires-Dist: django

django-template-mixins
======================

.. image:: https://img.shields.io/pypi/v/django-template-mixins.svg
    :target: https://pypi.org/project/django-template-mixins


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

