Index: django/template/defaulttags.py
===================================================================
--- django/template/defaulttags.py	(revision 6399)
+++ django/template/defaulttags.py	(working copy)
@@ -517,8 +517,14 @@
         {% endif %}{% endif %}{% endif %}
 
     but obviously much cleaner!
+
+    You can also use a literal string as a fallback value in case all
+    passed variables are False::
+
+        {% firstof var1 var2 var3 "fallback value" %}
+
     """
-    bits = token.contents.split()[1:]
+    bits = token.split_contents()[1:]
     if len(bits) < 1:
         raise TemplateSyntaxError, "'firstof' statement requires at least one argument"
     return FirstOfNode(bits)
Index: tests/regressiontests/templates/tests.py
===================================================================
--- tests/regressiontests/templates/tests.py	(revision 6399)
+++ tests/regressiontests/templates/tests.py	(working copy)
@@ -341,7 +341,10 @@
             'firstof03': ('{% firstof a b c %}', {'a':0,'b':2,'c':0}, '2'),
             'firstof04': ('{% firstof a b c %}', {'a':0,'b':0,'c':3}, '3'),
             'firstof05': ('{% firstof a b c %}', {'a':1,'b':2,'c':3}, '1'),
-            'firstof06': ('{% firstof %}', {}, template.TemplateSyntaxError),
+            'firstof06': ('{% firstof a b c %}', {'b':0,'c':3}, '3'),
+            'firstof07': ('{% firstof a b "c" %}', {'a':0}, 'c'),
+            'firstof08': ('{% firstof a b "c and d" %}', {'a':0,'b':0}, 'c and d'),
+            'firstof09': ('{% firstof %}', {}, template.TemplateSyntaxError),
 
             ### FOR TAG ###############################################################
             'for-tag01': ("{% for val in values %}{{ val }}{% endfor %}", {"values": [1, 2, 3]}, "123"),
Index: docs/templates.txt
===================================================================
--- docs/templates.txt	(revision 6399)
+++ docs/templates.txt	(working copy)
@@ -453,7 +453,12 @@
     {% else %}{% if var3 %}
         {{ var3 }}
     {% endif %}{% endif %}{% endif %}
+    
+You can also use a literal string as a fallback value in case all
+passed variables are False::
 
+    {% firstof var1 var2 var3 "fallback value" %}
+
 for
 ~~~
 
