mirror of
https://github.com/django/django.git
synced 2024-12-23 01:25:58 +00:00
Fixed #26118 -- Added 'is' operator to if template tag.
This commit is contained in:
parent
a08d2463d2
commit
c00ae7f58c
@ -98,6 +98,7 @@ OPERATORS = {
|
|||||||
'not': prefix(8, lambda context, x: not x.eval(context)),
|
'not': prefix(8, lambda context, x: not x.eval(context)),
|
||||||
'in': infix(9, lambda context, x, y: x.eval(context) in y.eval(context)),
|
'in': infix(9, lambda context, x, y: x.eval(context) in y.eval(context)),
|
||||||
'not in': infix(9, lambda context, x, y: x.eval(context) not in y.eval(context)),
|
'not in': infix(9, lambda context, x, y: x.eval(context) not in y.eval(context)),
|
||||||
|
'is': infix(10, lambda context, x, y: x.eval(context) is y.eval(context)),
|
||||||
'==': infix(10, lambda context, x, y: x.eval(context) == y.eval(context)),
|
'==': infix(10, lambda context, x, y: x.eval(context) == y.eval(context)),
|
||||||
'!=': infix(10, lambda context, x, y: x.eval(context) != y.eval(context)),
|
'!=': infix(10, lambda context, x, y: x.eval(context) != y.eval(context)),
|
||||||
'>': infix(10, lambda context, x, y: x.eval(context) > y.eval(context)),
|
'>': infix(10, lambda context, x, y: x.eval(context) > y.eval(context)),
|
||||||
|
@ -432,7 +432,7 @@ Use of actual parentheses in the :ttag:`if` tag is invalid syntax. If you need
|
|||||||
them to indicate precedence, you should use nested :ttag:`if` tags.
|
them to indicate precedence, you should use nested :ttag:`if` tags.
|
||||||
|
|
||||||
:ttag:`if` tags may also use the operators ``==``, ``!=``, ``<``, ``>``,
|
:ttag:`if` tags may also use the operators ``==``, ``!=``, ``<``, ``>``,
|
||||||
``<=``, ``>=`` and ``in`` which work as follows:
|
``<=``, ``>=``, ``in``, and ``is`` which work as follows:
|
||||||
|
|
||||||
``==`` operator
|
``==`` operator
|
||||||
^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^
|
||||||
@ -524,6 +524,17 @@ you should use::
|
|||||||
|
|
||||||
{% if a > b and b > c %}
|
{% if a > b and b > c %}
|
||||||
|
|
||||||
|
``is`` operator
|
||||||
|
^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
.. versionadded:: 1.10
|
||||||
|
|
||||||
|
Object identity. Tests if two values are the same object. Example::
|
||||||
|
|
||||||
|
{% if value is None %}
|
||||||
|
This will output if and only if value is None.
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
Filters
|
Filters
|
||||||
~~~~~~~
|
~~~~~~~
|
||||||
|
|
||||||
|
@ -291,6 +291,8 @@ Templates
|
|||||||
:class:`~django.template.backends.django.DjangoTemplates` backend and the
|
:class:`~django.template.backends.django.DjangoTemplates` backend and the
|
||||||
:class:`~django.template.Engine` class.
|
:class:`~django.template.Engine` class.
|
||||||
|
|
||||||
|
* Added the ``is`` comparison operator to the :ttag:`if` tag.
|
||||||
|
|
||||||
Tests
|
Tests
|
||||||
~~~~~
|
~~~~~
|
||||||
|
|
||||||
|
@ -527,3 +527,13 @@ class IfTagTests(SimpleTestCase):
|
|||||||
# A single equals sign is a syntax error.
|
# A single equals sign is a syntax error.
|
||||||
with self.assertRaises(TemplateSyntaxError):
|
with self.assertRaises(TemplateSyntaxError):
|
||||||
self.engine.render_to_string('if-tag-single-eq', {'foo': 1})
|
self.engine.render_to_string('if-tag-single-eq', {'foo': 1})
|
||||||
|
|
||||||
|
@setup({'template': '{% if foo is True %}yes{% else %}no{% endif %}'})
|
||||||
|
def test_if_is_match(self):
|
||||||
|
output = self.engine.render_to_string('template', {'foo': True})
|
||||||
|
self.assertEqual(output, 'yes')
|
||||||
|
|
||||||
|
@setup({'template': '{% if foo is True %}yes{% else %}no{% endif %}'})
|
||||||
|
def test_if_is_no_match(self):
|
||||||
|
output = self.engine.render_to_string('template', {'foo': 1})
|
||||||
|
self.assertEqual(output, 'no')
|
||||||
|
Loading…
Reference in New Issue
Block a user