Create a new template. If the source parameter (str or buffer) is missing, the name argument is used to guess a template filename. Subclasses can assume that self.source and/or self.filename are set. Both are strings. The lookup, encoding and settings parameters are
(self,
source=None,
name=None,
lookup=None,
encoding='utf8', **settings)
| 4190 | defaults = {} #used in render() |
| 4191 | |
| 4192 | def __init__(self, |
| 4193 | source=None, |
| 4194 | name=None, |
| 4195 | lookup=None, |
| 4196 | encoding='utf8', **settings): |
| 4197 | """ Create a new template. |
| 4198 | If the source parameter (str or buffer) is missing, the name argument |
| 4199 | is used to guess a template filename. Subclasses can assume that |
| 4200 | self.source and/or self.filename are set. Both are strings. |
| 4201 | The lookup, encoding and settings parameters are stored as instance |
| 4202 | variables. |
| 4203 | The lookup parameter stores a list containing directory paths. |
| 4204 | The encoding parameter should be used to decode byte strings or files. |
| 4205 | The settings parameter contains a dict for engine-specific settings. |
| 4206 | """ |
| 4207 | self.name = name |
| 4208 | self.source = source.read() if hasattr(source, 'read') else source |
| 4209 | self.filename = source.filename if hasattr(source, 'filename') else None |
| 4210 | self.lookup = [os.path.abspath(x) for x in lookup] if lookup else [] |
| 4211 | self.encoding = encoding |
| 4212 | self.settings = self.settings.copy() # Copy from class variable |
| 4213 | self.settings.update(settings) # Apply |
| 4214 | if not self.source and self.name: |
| 4215 | self.filename = self.search(self.name, self.lookup) |
| 4216 | if not self.filename: |
| 4217 | raise TemplateError('Template %s not found.' % repr(name)) |
| 4218 | if not self.source and not self.filename: |
| 4219 | raise TemplateError('No template specified.') |
| 4220 | self.prepare(**self.settings) |
| 4221 | |
| 4222 | @classmethod |
| 4223 | def search(cls, name, lookup=None): |