@@ -0,0 +1,1282 @@
+from django.template import TemplateDoesNotExist, TemplateSyntaxError%0Afrom django.template.backends.base import BaseEngine%0Afrom django.template.backends.utils import csrf_input_lazy, csrf_token_lazy%0A%0Afrom . import compiler%0Afrom . import loader%0A%0Aclass KnightsTemplater(BaseEngine):%0A%0A    def __init__(self, params):%0A        params = params.copy()%0A        options = params.pop('OPTIONS').copy()%0A%0A        super(KnightsTemplater, self).__init__(params)%0A%0A        for path in params.get('DIRS', %5B%5D):%0A            loader.add_path(path)%0A%0A    def from_string(self, template_code):%0A        tmpl = compiler.kompile(template_code)%0A        return Template(tmpl)%0A%0A    def get_template(self template_name):%0A        tmpl = loader.load_template(template_name)%0A        if tmpl is None:%0A            raise TemplateDoesNotExist(template_name)%0A        return Teplate(tmpl)%0A%0A%0Aclass Template(object):%0A%0A    def __init__(self, template):%0A        self.template = template%0A%0A    def render(self, context=None, request=None):%0A        if context is None:%0A            context = %7B%7D%0A        if request is not None:%0A            context%5B'request'%5D = request%0A            context%5B'csrf_input'%5D = csrf_input_lazy(request)%0A            context%5B'csrf_token'%5D = csrf_token_lazy(request)%0A        return self.template()(context)%0A

Add Django 1.8 engine wrapper