| ======================= |
| Whitespace and Escaping |
| ======================= |
| |
| This section of the documentation explains how to remove unused whitespace |
| from the templates and embed raw Jinja syntax. |
| |
| Escaping |
| ======== |
| |
| Sometimes you might want to add Jinja syntax elements into the template |
| without executing them. In that case you have quite a few possibilities. |
| |
| For small parts this might be a good way: |
| |
| .. sourcecode:: jinja |
| |
| {{ "{{ foo }} is variable syntax and {% foo %} is block syntax" }} |
| |
| When you have multiple elements you can use the ``raw`` block: |
| |
| .. sourcecode:: jinja |
| |
| {% raw %} |
| Filtering blocks works like this in Jinja: |
| {% filter escape %} |
| <html> |
| <code>goes here</code> |
| </html> |
| {% endfilter %} |
| {% endraw %} |
| |
| |
| Whitespace |
| ========== |
| |
| If the Jinja environment was created with ``trim_blocks`` set to true the |
| first newline after a template tag is removed automatically (php like |
| processing). |
| |
| Starting with `Jinja 1.1` you can also handle some whitespace rules in the |
| template. If you put an minus sign (`-`) to the start or end of an block |
| (for example a `for` tag), a comment or variable element you can remove |
| the whitespaces after or before that block: |
| |
| .. sourcecode:: jinja |
| |
| {% for item in seq -%} |
| {{ item }} |
| {%- endfor %} |
| |
| This will yield all elements without whitespace between them because they |
| are automatically removed. This of course works for other tags too: |
| |
| .. sourcecode:: jinja |
| |
| {% for user in userlist -%} |
| {{ user|e -}} |
| {% if not loop.last %},{% endif %} |
| {%- endfor %} |
| |
| Note that you must not use a whitespace between the tag and the minus sign: |
| |
| .. sourcecode:: jinja |
| |
| valid: |
| {%- if foo -%}...{% endif %} |
| |
| invalid: |
| |
| {% - if foo - %}...{% endif %} |