dummy.py 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import string
  2. from django.core.exceptions import ImproperlyConfigured
  3. from django.template import Origin, TemplateDoesNotExist
  4. from django.utils.html import conditional_escape
  5. from .base import BaseEngine
  6. from .utils import csrf_input_lazy, csrf_token_lazy
  7. class TemplateStrings(BaseEngine):
  8. app_dirname = 'template_strings'
  9. def __init__(self, params):
  10. params = params.copy()
  11. options = params.pop('OPTIONS').copy()
  12. if options:
  13. raise ImproperlyConfigured(
  14. "Unknown options: {}".format(", ".join(options)))
  15. super().__init__(params)
  16. def from_string(self, template_code):
  17. return Template(template_code)
  18. def get_template(self, template_name):
  19. tried = []
  20. for template_file in self.iter_template_filenames(template_name):
  21. try:
  22. with open(template_file, encoding='utf-8') as fp:
  23. template_code = fp.read()
  24. except FileNotFoundError:
  25. tried.append((
  26. Origin(template_file, template_name, self),
  27. 'Source does not exist',
  28. ))
  29. else:
  30. return Template(template_code)
  31. raise TemplateDoesNotExist(template_name, tried=tried, backend=self)
  32. class Template(string.Template):
  33. def render(self, context=None, request=None):
  34. if context is None:
  35. context = {}
  36. else:
  37. context = {k: conditional_escape(v) for k, v in context.items()}
  38. if request is not None:
  39. context['csrf_input'] = csrf_input_lazy(request)
  40. context['csrf_token'] = csrf_token_lazy(request)
  41. return self.safe_substitute(context)