我们从Python开源项目中,提取了以下16个代码示例,用于说明如何使用django.conf.settings.TEMPLATE_DIRS。
def setUp(self): self.old_TEMPLATE_DIRS = settings.TEMPLATE_DIRS settings.TEMPLATE_DIRS = ( os.path.join(os.path.dirname(admin.__file__), "templates"), ) self.user = User( username = "foo", is_staff = True, is_superuser = True, ) self.user.set_password("bar") self.user.save() # Log the user in. if hasattr(self, "settings"): with self.settings(INSTALLED_APPS=tuple(set(tuple(settings.INSTALLED_APPS) + ("django.contrib.sessions",)))): # HACK: Without this the client won't log in, for some reason. self.client.login( username = "foo", password = "bar", ) else: self.client.login( username = "foo", password = "bar", )
def setUp(self): template_dirs = [os.path.join(os.path.dirname(__file__), 'templates')] template_dirs = template_dirs + list(settings.TEMPLATE_DIRS) template_loaders = ['django.template.loaders.filesystem.Loader'] template_loaders = template_loaders + list(settings.TEMPLATE_LOADERS) # ensuring test templates directory is loaded first self.__overriden_settings = override_settings(**{ 'TEMPLATE_LOADERS': template_loaders, 'TEMPLATE_DIRS': template_dirs, }) self.__overriden_settings.enable() # resetting template loaders cache self.__template_source_loaders = loader.template_source_loaders loader.template_source_loaders = None
def test_template(self): templates = os.path.join(os.path.dirname(THIS_FILE), 'templates') with self.settings( TEMPLATE_DIRS=list(settings.TEMPLATE_DIRS) + [templates]): response = self.client.get(self.wizard_url) self.assertTemplateUsed(response, 'other_wizard_form.html')
def test_add_placeholder(self): # create page page = create_page("Add Placeholder", "nav_playground.html", "en", position="last-child", published=True, in_navigation=True) page.template = 'add_placeholder.html' page.save() page.publish('en') url = page.get_absolute_url() response = self.client.get(url) self.assertEqual(200, response.status_code) try: path = os.path.join(settings.TEMPLATE_DIRS[0], 'add_placeholder.html') except IndexError: path = os.path.join(settings.TEMPLATES[0]['DIRS'][0], 'add_placeholder.html') with open(path, 'r') as fobj: old = fobj.read() try: new = old.replace( '<!-- SECOND_PLACEHOLDER -->', '{% placeholder second_placeholder %}' ) with open(path, 'w') as fobj: fobj.write(new) response = self.client.get(url) self.assertEqual(200, response.status_code) finally: with open(path, 'w') as fobj: fobj.write(old)
def ensure_alert_templates_are_available(): """Inserts the ALERT_TEMPLATE_DIR into Django's TEMPLATE_DIRS list""" from django.conf import settings if ALERT_TEMPLATE_DIR not in settings.TEMPLATE_DIRS: settings.TEMPLATE_DIRS += (ALERT_TEMPLATE_DIR,)
def get_template_list(): for tmpldir in settings.TEMPLATE_DIRS: for dirname, _subdirs, files in os.walk(tmpldir): for name in files: fullpath = join(dirname, name) yield relpath(fullpath, tmpldir)
def test_template(self): templates = os.path.join(os.path.dirname(upath(__file__)), 'templates') with self.settings( TEMPLATE_DIRS=list(settings.TEMPLATE_DIRS) + [templates]): response = self.client.get(self.wizard_url) self.assertTemplateUsed(response, 'other_wizard_form.html')
def get_env(): """Configure and return a jinja2 Environment.""" global _env if _env: return _env # Mimic Django's setup by loading templates from directories in # TEMPLATE_DIRS and packages in INSTALLED_APPS. loaders = [jinja2.FileSystemLoader(d) for d in settings.TEMPLATE_DIRS] loaders += [jinja2.PackageLoader(c.name) for c in apps.get_app_configs()] opts = { 'trim_blocks': True, 'extensions': ['jinja2.ext.i18n', 'jingo.ext.JingoExtension'], 'autoescape': True, 'auto_reload': settings.DEBUG, 'loader': jinja2.ChoiceLoader(loaders), } if hasattr(settings, 'JINJA_CONFIG'): if hasattr(settings.JINJA_CONFIG, '__call__'): config = settings.JINJA_CONFIG() else: config = settings.JINJA_CONFIG opts.update(config) e = Environment(**opts) # Install null translations since gettext isn't always loaded up during # testing. if ('jinja2.ext.i18n' in e.extensions or 'jinja2.ext.InternationalizationExtension' in e.extensions): e.install_null_translations() _env = e return e
def tearDown(self): self.client.logout() self.user.delete() del self.user ChildTestAdminModel.objects.all().delete() settings.TEMPLATE_DIRS = self.old_TEMPLATE_DIRS # Tests for optional patch generation methods.
def setUp(self): self.old_installed_apps = settings.INSTALLED_APPS # remove django-mailer to properly test for outbound email if "mailer" in settings.INSTALLED_APPS: settings.INSTALLED_APPS.remove("mailer") self.old_template_dirs = settings.TEMPLATE_DIRS settings.TEMPLATE_DIRS = [ os.path.join(os.path.dirname(signup_codes.__file__), "tests", "templates"), ]
def tearDown(self): settings.INSTALLED_APPS = self.old_installed_apps settings.TEMPLATE_DIRS = self.old_template_dirs
def templates(self): if self._templates is None: self._templates = settings.TEMPLATES if not self._templates: warnings.warn( "You haven't defined a TEMPLATES setting. You must do so " "before upgrading to Django 1.10. Otherwise Django will be " "unable to load templates.", RemovedInDjango110Warning) self._templates = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': settings.TEMPLATE_DIRS, 'OPTIONS': { 'allowed_include_roots': settings.ALLOWED_INCLUDE_ROOTS, 'context_processors': settings.TEMPLATE_CONTEXT_PROCESSORS, 'debug': settings.TEMPLATE_DEBUG, 'loaders': settings.TEMPLATE_LOADERS, 'string_if_invalid': settings.TEMPLATE_STRING_IF_INVALID, }, }, ] templates = OrderedDict() backend_names = [] for tpl in self._templates: tpl = tpl.copy() try: # This will raise an exception if 'BACKEND' doesn't exist or # isn't a string containing at least one dot. default_name = tpl['BACKEND'].rsplit('.', 2)[-2] except Exception: invalid_backend = tpl.get('BACKEND', '<not defined>') raise ImproperlyConfigured( "Invalid BACKEND for a template engine: {}. Check " "your TEMPLATES setting.".format(invalid_backend)) tpl.setdefault('NAME', default_name) tpl.setdefault('DIRS', []) tpl.setdefault('APP_DIRS', False) tpl.setdefault('OPTIONS', {}) templates[tpl['NAME']] = tpl backend_names.append(tpl['NAME']) counts = Counter(backend_names) duplicates = [alias for alias, count in counts.most_common() if count > 1] if duplicates: raise ImproperlyConfigured( "Template engine aliases aren't unique, duplicates: {}. " "Set a unique NAME for each engine in settings.TEMPLATES." .format(", ".join(duplicates))) return templates
def get_templates(): from cms.utils.django_load import load_from_file if getattr(settings, 'CMS_TEMPLATES_DIR', False): tpldir = getattr(settings, 'CMS_TEMPLATES_DIR', False) # CMS_TEMPLATES_DIR can either be a string poiting to the templates directory # or a dictionary holding 'site: template dir' entries if isinstance(tpldir, dict): tpldir = tpldir[settings.SITE_ID] # We must extract the relative path of CMS_TEMPLATES_DIR to the neares # valid templates directory. Here we mimick what the filesystem and # app_directories template loaders do prefix = '' # Relative to TEMPLATE_DIRS for filesystem loader try: path = settings.TEMPLATE_DIRS except IndexError: path = [template['DIRS'][0] for template in settings.TEMPLATES] for basedir in path: if tpldir.find(basedir) == 0: prefix = tpldir.replace(basedir + os.sep, '') break # Relative to 'templates' directory that app_directory scans if not prefix: components = tpldir.split(os.sep) try: prefix = os.path.join(*components[components.index('templates') + 1:]) except ValueError: # If templates is not found we use the directory name as prefix # and hope for the best prefix = os.path.basename(tpldir) config_path = os.path.join(tpldir, '__init__.py') # Try to load templates list and names from the template module # If module file is not present skip configuration and just dump the filenames as templates if config_path: template_module = load_from_file(config_path) templates = [(os.path.join(prefix, data[0].strip()), data[1]) for data in template_module.TEMPLATES.items()] else: templates = list((os.path.join(prefix, tpl), tpl) for tpl in os.listdir(tpldir)) else: templates = list(getattr(settings, 'CMS_TEMPLATES', [])) if get_cms_setting('TEMPLATE_INHERITANCE'): templates.append((constants.TEMPLATE_INHERITANCE_MAGIC, _('Inherit the template of the nearest ancestor'))) return templates
def templates(self): if self._templates is None: self._templates = settings.TEMPLATES if not self._templates: warnings.warn( "You haven't defined a TEMPLATES setting. You must do so " "before upgrading to Django 2.0. Otherwise Django will be " "unable to load templates.", RemovedInDjango20Warning) self._templates = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': settings.TEMPLATE_DIRS, 'OPTIONS': { 'allowed_include_roots': settings.ALLOWED_INCLUDE_ROOTS, 'context_processors': settings.TEMPLATE_CONTEXT_PROCESSORS, 'debug': settings.TEMPLATE_DEBUG, 'loaders': settings.TEMPLATE_LOADERS, 'string_if_invalid': settings.TEMPLATE_STRING_IF_INVALID, }, }, ] templates = OrderedDict() backend_names = [] for tpl in self._templates: tpl = tpl.copy() try: # This will raise an exception if 'BACKEND' doesn't exist or # isn't a string containing at least one dot. default_name = tpl['BACKEND'].rsplit('.', 2)[-2] except Exception: invalid_backend = tpl.get('BACKEND', '<not defined>') raise ImproperlyConfigured( "Invalid BACKEND for a template engine: {}. Check " "your TEMPLATES setting.".format(invalid_backend)) tpl.setdefault('NAME', default_name) tpl.setdefault('DIRS', []) tpl.setdefault('APP_DIRS', False) tpl.setdefault('OPTIONS', {}) templates[tpl['NAME']] = tpl backend_names.append(tpl['NAME']) counts = Counter(backend_names) duplicates = [alias for alias, count in counts.most_common() if count > 1] if duplicates: raise ImproperlyConfigured( "Template engine aliases aren't unique, duplicates: {}. " "Set a unique NAME for each engine in settings.TEMPLATES." .format(", ".join(duplicates))) return templates