Index: django/template/context.py
===================================================================
--- django/template/context.py	(revision 7573)
+++ django/template/context.py	(working copy)
@@ -13,6 +13,7 @@
         dict_ = dict_ or {}
         self.dicts = [dict_]
         self.autoescape = autoescape
+        self.template_cache = {}
 
     def __repr__(self):
         return repr(self.dicts)
@@ -64,6 +65,12 @@
         "Like dict.update(). Pushes an entire dictionary's keys and values onto the context."
         self.dicts = [other_dict] + self.dicts
         return other_dict
+        
+    def get_template(self, template_name):
+        if not template_name in self.template_cache:
+            from django.template.loader import get_template
+            self.template_cache[template_name] = get_template(template_name)
+        return self.template_cache[template_name]
 
 # This is a function rather than module-level procedural code because we only
 # want it to execute if somebody uses RequestContext.
Index: django/template/loader_tags.py
===================================================================
--- django/template/loader_tags.py	(revision 7573)
+++ django/template/loader_tags.py	(working copy)
@@ -92,22 +92,6 @@
                 parent_block.nodelist = block_node.nodelist
         return compiled_parent.render(context)
 
-class ConstantIncludeNode(Node):
-    def __init__(self, template_path):
-        try:
-            t = get_template(template_path)
-            self.template = t
-        except:
-            if settings.TEMPLATE_DEBUG:
-                raise
-            self.template = None
-
-    def render(self, context):
-        if self.template:
-            return self.template.render(context)
-        else:
-            return ''
-
 class IncludeNode(Node):
     def __init__(self, template_name):
         self.template_name = Variable(template_name)
@@ -115,7 +99,7 @@
     def render(self, context):
         try:
             template_name = self.template_name.resolve(context)
-            t = get_template(template_name)
+            t = context.get_template(template_name)
             return t.render(context)
         except TemplateSyntaxError, e:
             if settings.TEMPLATE_DEBUG:
@@ -178,9 +162,6 @@
     bits = token.contents.split()
     if len(bits) != 2:
         raise TemplateSyntaxError, "%r tag takes one argument: the name of the template to be included" % bits[0]
-    path = bits[1]
-    if path[0] in ('"', "'") and path[-1] == path[0]:
-        return ConstantIncludeNode(path[1:-1])
     return IncludeNode(bits[1])
 
 register.tag('block', do_block)
