summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/templates.rst43
1 files changed, 30 insertions, 13 deletions
diff --git a/docs/templates.rst b/docs/templates.rst
index 6bdd6fc..89958b8 100644
--- a/docs/templates.rst
+++ b/docs/templates.rst
@@ -587,17 +587,26 @@ When combined with ``scoped``, the ``required`` modifier must be placed
Template Objects
~~~~~~~~~~~~~~~~
-.. versionchanged:: 2.4
+``extends``, ``include``, and ``import`` can take a template object
+instead of the name of a template to load. This could be useful in some
+advanced situations, since you can use Python code to load a template
+first and pass it in to ``render``.
+
+.. code-block:: python
+
+ if debug_mode:
+ layout = env.get_template("debug_layout.html")
+ else:
+ layout = env.get_template("layout.html")
-If a template object was passed in the template context, you can
-extend from that object as well. Assuming the calling code passes
-a layout template as `layout_template` to the environment, this
-code works::
+ user_detail = env.get_template("user/detail.html", layout=layout)
+
+.. code-block:: jinja
- {% extends layout_template %}
+ {% extends layout %}
-Previously, the `layout_template` variable had to be a string with
-the layout template's filename for this to work.
+Note how ``extends`` is passed the variable with the template object
+that was passed to ``render``, instead of a string.
HTML Escaping
@@ -914,9 +923,6 @@ are available on a macro object:
`arguments`
A tuple of the names of arguments the macro accepts.
-`defaults`
- A tuple of default values.
-
`catch_kwargs`
This is `true` if the macro accepts extra keyword arguments (i.e.: accesses
the special `kwargs` variable).
@@ -1338,8 +1344,19 @@ but exists for completeness' sake. The following operators are supported:
``{{ '=' * 80 }}`` would print a bar of 80 equal signs.
``**``
- Raise the left operand to the power of the right operand. ``{{ 2**3 }}``
- would return ``8``.
+ Raise the left operand to the power of the right operand.
+ ``{{ 2**3 }}`` would return ``8``.
+
+ Unlike Python, chained pow is evaluated left to right.
+ ``{{ 3**3**3 }}`` is evaluated as ``(3**3)**3`` in Jinja, but would
+ be evaluated as ``3**(3**3)`` in Python. Use parentheses in Jinja
+ to be explicit about what order you want. It is usually preferable
+ to do extended math in Python and pass the results to ``render``
+ rather than doing it in the template.
+
+ This behavior may be changed in the future to match Python, if it's
+ possible to introduce an upgrade path.
+
Comparisons
~~~~~~~~~~~