diff options
| author | Adrian Holovaty <adrian@holovaty.com> | 2005-10-17 02:37:50 +0000 |
|---|---|---|
| committer | Adrian Holovaty <adrian@holovaty.com> | 2005-10-17 02:37:50 +0000 |
| commit | 57b4f231fdc24dcb41a503c3314442ff5250a830 (patch) | |
| tree | f2156155788e40698742a9895902a1b6b4c7856c /django/core/template | |
| parent | b9736c5c633fe0bd2e1aeda2b9e0a99257175e33 (diff) | |
Fixed #583 -- Added app_directories template loader, which searches for templates in 'templates' directory in each INSTALLED_APPS package. It's turned off by default.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@892 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'django/core/template')
| -rw-r--r-- | django/core/template/loaders/app_directories.py | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/django/core/template/loaders/app_directories.py b/django/core/template/loaders/app_directories.py new file mode 100644 index 0000000000..5afb18e2f5 --- /dev/null +++ b/django/core/template/loaders/app_directories.py @@ -0,0 +1,28 @@ +# Wrapper for loading templates from "template" directories in installed app packages. + +from django.conf.settings import INSTALLED_APPS, TEMPLATE_FILE_EXTENSION +from django.core.template import TemplateDoesNotExist +import os + +# At compile time, cache the directories to search. +app_template_dirs = [] +for app in INSTALLED_APPS: + i = app.rfind('.') + m, a = app[:i], app[i+1:] + mod = getattr(__import__(m, '', '', [a]), a) + template_dir = os.path.join(os.path.dirname(mod.__file__), 'templates') + if os.path.isdir(template_dir): + app_template_dirs.append(template_dir) + +# It won't change, so convert it to a tuple to save memory. +app_template_dirs = tuple(app_template_dirs) + +def load_template_source(template_name, template_dirs=None): + for template_dir in app_template_dirs: + filepath = os.path.join(template_dir, template_name) + TEMPLATE_FILE_EXTENSION + try: + return open(filepath).read() + except IOError: + pass + raise TemplateDoesNotExist, template_name +load_template_source.is_usable = True |
