Sometimes you need to write a tag that renders other template, but the template name depends on template tag arguments. Usually you use simple_tag or write your own Node class. Here is a simple aproach that uses inclusion_tag. This way you can use context objects when used with takes_context=True
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | dummy_extends_template.html
=========================
{% extends template %}
template_tag_code.py
===============================
from django.template import Template, Library
register = Library()
# you can use {% include template %} to
...
@register.inclusion_tag("dummy_extends_template.html" )
def my_template_tag(template, arg1, arg2, arg3):
""" template can be Template object or template name """
...
return {'template':template, 'arg1':arg1, 'arg2':arg2 }
|
More like this
- Template tag - list punctuation for a list of items by shapiromatron 9 months, 4 weeks ago
- JSONRequestMiddleware adds a .json() method to your HttpRequests by cdcarter 10 months ago
- Serializer factory with Django Rest Framework by julio 1 year, 4 months ago
- Image compression before saving the new model / work with JPG, PNG by Schleidens 1 year, 5 months ago
- Help text hyperlinks by sa2812 1 year, 6 months ago
Comments
Please login first before commenting.