Field List Tag

 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
40
import re
from django import template

register=template.Library()

class PropertyListNode(template.Node):
    def __init__(self,model_string,format_spec):
        self.model_string=model_string
        self.format_spec=format_spec
    def render(self,context):
        model_instance=context[self.model_string]
        out=""
        for field in model_instance.__class__._meta.fields:
            try:
                out+=self.format_spec%\
                    (field.verbose_name,
                     getattr(model_instance,field.name))
            except TypeError as e:
                raise template.TemplateSyntaxError("invalid format string\
                        specified  to property list template tag: "+str(e))
        return out


def property_list(parser,token):
    """Property list tag, returns all fields of a model in the order defined,
    using a format specifier passed to the tag. 

    Example usage {% property_list car
    "<li><span>%s:</span><span>%s</span></li>" %}"""
    try:
        tag_name, model,format_spec=token.split_contents()
        #remove quotes from format_spec string
        format_spec=re.sub("\"","",format_spec)
    except ValueError:
        raise template.TemplateSyntaxError("%r tag requires model\
 and format string arguments only"%token.contents.split()[0])
    return PropertyListNode(model,format_spec) 


register.tag('property_list',property_list)

More like this

  1. Simple template tag to do |stringformat filter with format from a variable by leopd 3 years ago
  2. date range by mackenzie_kearl 6 years, 2 months ago
  3. simple tag-cloud Template Tag by metty 4 years, 7 months ago
  4. Hierarchical Flatpage Tag by 0sn 5 years, 5 months ago
  5. Changing the look of newforms as_table with a custom BaseForm by bikeshedder 6 years, 10 months ago

Comments

(Forgotten your password?)