1 | Index: django/template/defaulttags.py
|
---|
2 | ===================================================================
|
---|
3 | --- django/template/defaulttags.py (revision 11154)
|
---|
4 | +++ django/template/defaulttags.py (working copy)
|
---|
5 | @@ -564,7 +564,7 @@
|
---|
6 | #@register.tag
|
---|
7 | def firstof(parser, token):
|
---|
8 | """
|
---|
9 | - Outputs the first variable passed that is not False.
|
---|
10 | + Outputs the first variable passed that is not False, without escaping.
|
---|
11 |
|
---|
12 | Outputs nothing if all the passed variables are False.
|
---|
13 |
|
---|
14 | @@ -575,11 +575,11 @@
|
---|
15 | This is equivalent to::
|
---|
16 |
|
---|
17 | {% if var1 %}
|
---|
18 | - {{ var1 }}
|
---|
19 | + {{ var1|safe }}
|
---|
20 | {% else %}{% if var2 %}
|
---|
21 | - {{ var2 }}
|
---|
22 | + {{ var2|safe }}
|
---|
23 | {% else %}{% if var3 %}
|
---|
24 | - {{ var3 }}
|
---|
25 | + {{ var3|safe }}
|
---|
26 | {% endif %}{% endif %}{% endif %}
|
---|
27 |
|
---|
28 | but obviously much cleaner!
|
---|
29 | @@ -589,6 +589,12 @@
|
---|
30 |
|
---|
31 | {% firstof var1 var2 var3 "fallback value" %}
|
---|
32 |
|
---|
33 | + If you want to escape the output, use a filter tag::
|
---|
34 | +
|
---|
35 | + {% filter force_escape %}
|
---|
36 | + {% firstof var1 var2 var3 "fallback value" %}
|
---|
37 | + {% endfilter %}
|
---|
38 | +
|
---|
39 | """
|
---|
40 | bits = token.split_contents()[1:]
|
---|
41 | if len(bits) < 1:
|
---|
42 | Index: docs/ref/templates/builtins.txt
|
---|
43 | ===================================================================
|
---|
44 | --- docs/ref/templates/builtins.txt (revision 11154)
|
---|
45 | +++ docs/ref/templates/builtins.txt (working copy)
|
---|
46 | @@ -101,6 +101,13 @@
|
---|
47 | Values enclosed in single (``'``) or double quotes (``"``) are treated as
|
---|
48 | string literals, while values without quotes are treated as template variables.
|
---|
49 |
|
---|
50 | +Note that as cycle is a tag, variables will never be escaped unless you
|
---|
51 | +do it explicitly with a filter tag ::
|
---|
52 | +
|
---|
53 | + {% filter force_escape %}
|
---|
54 | + {% cycle var1 var2 var3 %}
|
---|
55 | + {% endfilter %}
|
---|
56 | +
|
---|
57 | For backwards compatibility, the ``{% cycle %}`` tag supports the much inferior
|
---|
58 | old syntax from previous Django versions. You shouldn't use this in any new
|
---|
59 | projects, but for the sake of the people who are still using it, here's what it
|
---|
60 | @@ -160,9 +167,10 @@
|
---|
61 | firstof
|
---|
62 | ~~~~~~~
|
---|
63 |
|
---|
64 | -Outputs the first variable passed that is not False. Outputs nothing if all the
|
---|
65 | -passed variables are False.
|
---|
66 | +Outputs the first variable passed that is not False, without escaping.
|
---|
67 |
|
---|
68 | +Outputs nothing if all the passed variables are False.
|
---|
69 | +
|
---|
70 | Sample usage::
|
---|
71 |
|
---|
72 | {% firstof var1 var2 var3 %}
|
---|
73 | @@ -170,11 +178,11 @@
|
---|
74 | This is equivalent to::
|
---|
75 |
|
---|
76 | {% if var1 %}
|
---|
77 | - {{ var1 }}
|
---|
78 | + {{ var1|safe }}
|
---|
79 | {% else %}{% if var2 %}
|
---|
80 | - {{ var2 }}
|
---|
81 | + {{ var2|safe }}
|
---|
82 | {% else %}{% if var3 %}
|
---|
83 | - {{ var3 }}
|
---|
84 | + {{ var3|safe }}
|
---|
85 | {% endif %}{% endif %}{% endif %}
|
---|
86 |
|
---|
87 | You can also use a literal string as a fallback value in case all
|
---|
88 | @@ -182,6 +190,12 @@
|
---|
89 |
|
---|
90 | {% firstof var1 var2 var3 "fallback value" %}
|
---|
91 |
|
---|
92 | +If you want to escape the output, use a filter tag::
|
---|
93 | +
|
---|
94 | + {% filter force_escape %}
|
---|
95 | + {% firstof var1 var2 var3 "fallback value" %}
|
---|
96 | + {% endfilter %}
|
---|
97 | +
|
---|
98 | .. templatetag:: for
|
---|
99 |
|
---|
100 | for
|
---|