Login

Link If templatetag

Author:
bmihelac
Posted:
January 3, 2013
Language:
Python
Version:
1.4
Tags:
link
Score:
0 (after 0 ratings)

Django templatetag wraps everything between {% linkif %} and {% endlinkif %} inside a link if link is not False.

Sample usage::

    {% linkif "http://example.com" %}link{% endlinkif %}
    {% linkif object.url %}link only if object has an url{% endlinkif %}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
from django import template
 
register = template.Library()
 
 
@register.tag
def linkif(parser, token):
    """
    Wraps everything between ``{% linkif %}`` and ``{% endlinkif %}`` inside
    a ``link`` if ``link`` is not False.
 
    Sample usage::
 
        {% linkif "http://example.com" %}link{% endlinkif %}
        {% linkif object.url %}link only if object has an url{% endlinkif %}
 
    """
    bits = token.split_contents()
    if len(bits) != 2:
        raise template.TemplateSyntaxError("'%s' takes one argument"
                                  " (link)" % bits[0])
    link = parser.compile_filter(bits[1])
    nodelist = parser.parse(('endlinkif',))
    parser.delete_first_token()
    return LinkIfNode(nodelist, link)
 
 
class LinkIfNode(template.Node):
 
    def __init__(self, nodelist, link):
        self.link = link
        self.nodelist = nodelist
 
    def render(self, context):
        output = self.nodelist.render(context)
        link = self.link.resolve(context)
        if link:
            output = '<a href="%s">%s</a>' % (link, output)
        return output

More like this

  1. Absolute URL Templatetag by johnboxall 6 years, 1 month ago
  2. Get active page's url by another language (templatetag) by muratcorlu 2 years, 5 months ago
  3. tag to store a settings value as template variable by pflanno 3 years, 12 months ago
  4. hide_email by rukeba 7 years, 2 months ago
  5. Link filter by sean2000 7 years, 6 months ago

Comments

Please login first before commenting.