Coverage for /var/srv/projects/api.amasfac.comuna18.com/tmp/venv/lib/python3.9/site-packages/django/template/loader.py: 14%
32 statements
« prev ^ index » next coverage.py v6.4.4, created at 2023-07-17 14:22 -0600
« prev ^ index » next coverage.py v6.4.4, created at 2023-07-17 14:22 -0600
1from . import engines
2from .exceptions import TemplateDoesNotExist
5def get_template(template_name, using=None):
6 """
7 Load and return a template for the given name.
9 Raise TemplateDoesNotExist if no such template exists.
10 """
11 chain = []
12 engines = _engine_list(using)
13 for engine in engines:
14 try:
15 return engine.get_template(template_name)
16 except TemplateDoesNotExist as e:
17 chain.append(e)
19 raise TemplateDoesNotExist(template_name, chain=chain)
22def select_template(template_name_list, using=None):
23 """
24 Load and return a template for one of the given names.
26 Try names in order and return the first template found.
28 Raise TemplateDoesNotExist if no such template exists.
29 """
30 if isinstance(template_name_list, str):
31 raise TypeError(
32 "select_template() takes an iterable of template names but got a "
33 "string: %r. Use get_template() if you want to load a single "
34 "template by name." % template_name_list
35 )
37 chain = []
38 engines = _engine_list(using)
39 for template_name in template_name_list:
40 for engine in engines:
41 try:
42 return engine.get_template(template_name)
43 except TemplateDoesNotExist as e:
44 chain.append(e)
46 if template_name_list:
47 raise TemplateDoesNotExist(", ".join(template_name_list), chain=chain)
48 else:
49 raise TemplateDoesNotExist("No template names provided")
52def render_to_string(template_name, context=None, request=None, using=None):
53 """
54 Load a template and render it with a context. Return a string.
56 template_name may be a string or a list of strings.
57 """
58 if isinstance(template_name, (list, tuple)):
59 template = select_template(template_name, using=using)
60 else:
61 template = get_template(template_name, using=using)
62 return template.render(context, request)
65def _engine_list(using=None):
66 return engines.all() if using is None else [engines[using]]