Index: django/template/__init__.py
===================================================================
--- django/template/__init__.py	(revision 12812)
+++ django/template/__init__.py	(working copy)
@@ -570,7 +570,23 @@
                 if not lookup:
                     arg_vals.append(mark_safe(arg))
                 else:
-                    arg_vals.append(arg.resolve(context))
+                    try:
+                        arg_val = arg.resolve(context)
+                    except VariableDoesNotExist:
+                        if ignore_failures:
+                            arg_val = None
+                        else:
+                            if settings.TEMPLATE_STRING_IF_INVALID:
+                                global invalid_var_format_string
+                                if invalid_var_format_string is None:
+                                    invalid_var_format_string = '%s' in settings.TEMPLATE_STRING_IF_INVALID
+                                if invalid_var_format_string:
+                                    arg_val= settings.TEMPLATE_STRING_IF_INVALID % self.var
+                                else:
+                                    arg_val= settings.TEMPLATE_STRING_IF_INVALID
+                            else:
+                                arg_val = settings.TEMPLATE_STRING_IF_INVALID
+                    arg_vals.append(arg_val)
             if getattr(func, 'needs_autoescape', False):
                 new_obj = func(obj, autoescape=context.autoescape, *arg_vals)
             else:
