Link If templatetag

 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 4 years ago
  2. Human readable file names decorator by maxk 2 years, 1 month ago
  3. Sort Table Headers by insin 5 years, 10 months ago
  4. baseconv.py - convert base 10 integers to base X and back again by simon 4 years, 1 month ago
  5. DownloadView generic class view by ckniffen 1 year, 8 months ago

Comments

SamuelD (on May 20, 2013):

Thanks for this wonderful snippet! Acheter une chicha pour pas cher

#

(Forgotten your password?)