mirror of https://github.com/django/django.git
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)),
|
||||
'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)),
|
||||
'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)),
|
||||
|
|
|
@ -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.
|
||||
|
||||
:ttag:`if` tags may also use the operators ``==``, ``!=``, ``<``, ``>``,
|
||||
``<=``, ``>=`` and ``in`` which work as follows:
|
||||
``<=``, ``>=``, ``in``, and ``is`` which work as follows:
|
||||
|
||||
``==`` operator
|
||||
^^^^^^^^^^^^^^^
|
||||
|
@ -524,6 +524,17 @@ you should use::
|
|||
|
||||
{% 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
|
||||
~~~~~~~
|
||||
|
||||
|
|
|
@ -291,6 +291,8 @@ Templates
|
|||
:class:`~django.template.backends.django.DjangoTemplates` backend and the
|
||||
:class:`~django.template.Engine` class.
|
||||
|
||||
* Added the ``is`` comparison operator to the :ttag:`if` tag.
|
||||
|
||||
Tests
|
||||
~~~~~
|
||||
|
||||
|
|
|
@ -527,3 +527,13 @@ class IfTagTests(SimpleTestCase):
|
|||
# A single equals sign is a syntax error.
|
||||
with self.assertRaises(TemplateSyntaxError):
|
||||
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