diff options
| author | Tim Graham <timograham@gmail.com> | 2014-08-26 10:35:32 -0400 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2014-08-26 10:45:18 -0400 |
| commit | 34116ad71c5f934fc2702c32a8cd743f36a85479 (patch) | |
| tree | 7874457a109df45af8f04f10880fa53aa026f37a /docs | |
| parent | 808722e062ff261af4f24342b15fcf67c37c5cf0 (diff) | |
[1.7.x] Fixed #17719 -- Documented that template syntax sequences cannot be used as string literals.
Backport of e02f45d5ea from master
Diffstat (limited to 'docs')
| -rw-r--r-- | docs/ref/templates/api.txt | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/docs/ref/templates/api.txt b/docs/ref/templates/api.txt index 0a50e5e243..2c8abe22ae 100644 --- a/docs/ref/templates/api.txt +++ b/docs/ref/templates/api.txt @@ -274,6 +274,31 @@ Builtin variables Every context contains ``True``, ``False`` and ``None``. As you would expect, these variables resolve to the corresponding Python objects. +Limitations with string literals +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Django's template language has no way to escape the characters used for its own +syntax. For example, the :ttag:`templatetag` tag is required if you need to +output character sequences like ``{%`` and ``%}``. + +A similar issue exists if you want to include these sequences in template filter +or tag arguments. For example, when parsing a block tag, Django's template +parser looks for the first occurrence of ``%}`` after a ``{%``. This prevents +the use of ``"%}"`` as a string literal. For example, a ``TemplateSyntaxError`` +will be raised for the following expressions:: + + {% include "template.html" tvar="Some string literal with %} in it." %} + + {% with tvar="Some string literal with %} in it." %}{% endwith %} + +The same issue can be triggered by using a reserved sequence in filter +arguments:: + + {{ some.variable|default:"}}" }} + +If you need to use strings with these sequences, store them in template +variables or use a custom template tag or filter to workaround the limitation. + Playing with Context objects ---------------------------- |
