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=[], encoding='utf8', **settings)
| 3209 | defaults = {} #used in render() |
| 3210 | |
| 3211 | def __init__(self, source=None, name=None, lookup=[], encoding='utf8', **settings): |
| 3212 | """ Create a new template. |
| 3213 | If the source parameter (str or buffer) is missing, the name argument |
| 3214 | is used to guess a template filename. Subclasses can assume that |
| 3215 | self.source and/or self.filename are set. Both are strings. |
| 3216 | The lookup, encoding and settings parameters are stored as instance |
| 3217 | variables. |
| 3218 | The lookup parameter stores a list containing directory paths. |
| 3219 | The encoding parameter should be used to decode byte strings or files. |
| 3220 | The settings parameter contains a dict for engine-specific settings. |
| 3221 | """ |
| 3222 | self.name = name |
| 3223 | self.source = source.read() if hasattr(source, 'read') else source |
| 3224 | self.filename = source.filename if hasattr(source, 'filename') else None |
| 3225 | self.lookup = [os.path.abspath(x) for x in lookup] |
| 3226 | self.encoding = encoding |
| 3227 | self.settings = self.settings.copy() # Copy from class variable |
| 3228 | self.settings.update(settings) # Apply |
| 3229 | if not self.source and self.name: |
| 3230 | self.filename = self.search(self.name, self.lookup) |
| 3231 | if not self.filename: |
| 3232 | raise TemplateError('Template %s not found.' % repr(name)) |
| 3233 | if not self.source and not self.filename: |
| 3234 | raise TemplateError('No template specified.') |
| 3235 | self.prepare(**self.settings) |
| 3236 | |
| 3237 | @classmethod |
| 3238 | def search(cls, name, lookup=[]): |