Index: django/core/template/loader.py
===================================================================
--- django/core/template/loader.py	(revision 880)
+++ django/core/template/loader.py	(working copy)
@@ -160,6 +160,34 @@
                 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.nodelist = t.nodelist
+        except Exception, e:
+            self.nodelist = None
+
+    def render(self, context):
+        if self.nodelist:
+            return self.nodelist.render(context)
+        else:
+            return ''
+
+class IncludeNode(Node):
+    def __init__(self, template_path_var):
+        self.template_path_var = template_path_var
+
+    def render(self, context):
+         try:
+             template_path = resolve_variable(self.template_path_var, context)
+             print "IncludeNode rendering %s" % template_path
+             t = template_loader.get_template(template_path)
+             return t.render(context)
+         except Exception, e:
+             return '' # Fail silently for invalid included templates.
+
+
 def do_block(parser, token):
     """
     Define a block that can be overridden by child templates.
@@ -202,5 +230,19 @@
         raise TemplateSyntaxError, "'%s' cannot appear more than once in the same template" % bits[0]
     return ExtendsNode(nodelist, parent_name, parent_name_var)
 
+def do_include(parser, token):
+    """
+    Loads a template using standard resolution mechanisms, and renders it in the current context.
+    """
+    bits = token.contents.split()
+    if len(bits) != 2:
+        raise TemplateSyntaxError, "'include' tag takes one argument: the path to the template to be included"
+
+    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)
 register_tag('extends', do_extends)
+register_tag('include', do_include)
