- Author:
- hughsaunders
- Posted:
- May 3, 2011
- Language:
- Python
- Version:
- Not specified
- Score:
- 0 (after 0 ratings)
Tag for iterating through the fields of an object from a template.
The tag is passed two string arguments, the name of the model to use (which is then looked up in the context dictionary), and the format string. The format string should include two string place holders.
The tag will output each field name and value according to the format string supplied.
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
- Template tag - list punctuation for a list of items by shapiromatron 10 months, 1 week ago
- JSONRequestMiddleware adds a .json() method to your HttpRequests by cdcarter 10 months, 2 weeks ago
- Serializer factory with Django Rest Framework by julio 1 year, 5 months ago
- Image compression before saving the new model / work with JPG, PNG by Schleidens 1 year, 6 months ago
- Help text hyperlinks by sa2812 1 year, 6 months ago
Comments
Please login first before commenting.