- Author:
- a.v.khodyrev
- Posted:
- July 18, 2009
- Language:
- Python
- Version:
- 1.0
- Score:
- 0 (after 0 ratings)
TestableTemplate behaves just like django.template.Template, but you can give it a list of template.Libraries to load before parsing the template. This is equivalent to adding a bunch of {% load %} tags to the beginning of your template string, but you can use custom tag libraries which do not belong to Django applications' templatetags packages.
This is occasionally useful in testing.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | from django.template import Template, TemplateEncodingError,
StringOrigin, Lexer, Parser
from django.utils.encoding import smart_unicode
class TestableTemplate(Template):
def __init__(self, template_string, origin=None,
name='<Unknown Template>', libraries=[]):
try:
template_string = smart_unicode(template_string)
except UnicodeDecodeError:
raise TemplateEncodingError("Templates can only be
constructed from unicode or UTF-8 strings.")
origin = StringOrigin(template_string)
self.nodelist = my_compile_string(template_string, origin,
libraries)
self.name = name
def my_compile_string(template_string, origin, libraries=[]):
"Compiles template_string into NodeList ready for rendering"
lexer = Lexer(template_string, origin)
parser = Parser(lexer.tokenize())
for lib in libraries:
parser.add_library(lib)
return parser.parse()
|
More like this
- Template tag - list punctuation for a list of items by shapiromatron 11 months, 3 weeks ago
- JSONRequestMiddleware adds a .json() method to your HttpRequests by cdcarter 11 months, 4 weeks ago
- Serializer factory with Django Rest Framework by julio 1 year, 6 months ago
- Image compression before saving the new model / work with JPG, PNG by Schleidens 1 year, 7 months ago
- Help text hyperlinks by sa2812 1 year, 8 months ago
Comments
Please login first before commenting.