Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Fixed #4123 -- Changed the firstof template tag to correctly handle a…

… literal

string as its last argument. Thanks, Wesley Fok and Matt Boersma.


git-svn-id: http://code.djangoproject.com/svn/django/trunk@6571 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
commit b678601df302307f0e1fed9b5354765a3b238481 1 parent 8a3cf46
@malcolmt malcolmt authored
View
8 django/template/defaulttags.py
@@ -517,8 +517,14 @@ def firstof(parser, token):
{% 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)
View
5 docs/templates.txt
@@ -476,6 +476,11 @@ This is equivalent to::
{{ 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
~~~
View
5 tests/regressiontests/templates/tests.py
@@ -341,7 +341,10 @@ def test_templates(self):
'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"),
Please sign in to comment.
Something went wrong with that request. Please try again.