django-templates-macros
django-templates-macros copied to clipboard
Add macros to your django templates
|PyPI Version|
django-templates-macros
Add macros to your django templates
Origin
The original code of this app is taken from https://djangosnippets.org/snippets/2892/ by MattP.
This snippets cites::
Based on snippet by
Michal Ludvig <[email protected]> http://www.logix.cz/michal
http://djangosnippets.org/snippets/363/
Extended for args and kwargs into templatetags/kwacro.py by
Skylar Saveland <[email protected]> http://skyl.org
https://gist.github.com/skyl/1715202
Modified to support rendering into context by [email protected]
Where
You can find this package here:
- Github repository: https://github.com/twidi/django-templates-macros
- Pypi package: https://pypi.python.org/pypi/django-templates-macros
Usage
-
Add this app "macros" to your INSTALLED_APPS
-
In your template load the library::
{% load macros %}
-
Define a new macro called 'my_macro' that takes args and/or kwargs All will be optional::
{% macro my_macro arg1 arg2 baz="Default baz" %} {% firstof arg1 "default_arg1" %} {% if arg2 %}{{ arg2 }}{% else %}default_arg2{% endif %} {{ baz }} {% endmacro %}
-
Use the macro with string parameters or context variables::
{% usemacro my_macro "foo" "bar" baz="KW" %}
{% usemacro my_macro num_pages "bar" %}
Renders like::
foo bar KW
77 bar Default baz
-
Alternatively save your macros in a separate file, e.g. "mymacro.html" and load it to the current template with::
{% loadmacros "mymacros.html" %}Then use these loaded macros in as described above.
Bear in mind that defined and loaded macros are local to each template
file and are not inherited through {% extends ... %} tags.
-
When recursive macros are needed, use the 'recurse_macro' template tag::
{% macro MENU entries %}
-
{% for entry in entries %}
- {{ entry.label }} {% if entry.children %} {% recurse_macro MENU entry.children %} {% endif %} {% endfor %}
.. |PyPI Version| image:: https://img.shields.io/pypi/v/django-templates-macros.svg :target: https://pypi.python.org/pypi/django-templates-macros