On 05/01/17 02:39, Tim Martin wrote:
2) There appears to be an inconsistency in the default_if_none
modifier. If I have a template with
x|default_if_none:y = {{x|default_if_none:y}}
{% if x|default_if_none:y %}
x|default_if_none:y is apparently True
{% endif %}
with y defined to True and x undefined, then it produces:
x|default_if_none:y =
x|default_if_none:y is apparently True
IOW it appears that the default_if_none doesn't cause y's value to
be used in the case where the variable is being printed, even
though it causes the expression to have y's value when evaluated in
an if. I think this is something to do with the fact that the two
ways of handling failures (ignore_failures and string_if_invalid)
do different things.
I don't see a way to make backward compatible code here.
I think this is just a bug, does anyone think otherwise?
This seems to be working exactly as it should.
In the context of template variable interpolation i.e. `{{ }}` syntax,
it is defined that `x` in this case will get converted to the empty
string (or your 'string_if_invalid' setting) -
https://docs.djangoproject.com/en/dev/ref/templates/api/#how-invalid-variables-are-handled
- unlike the case for `if` tags.
When this value (the empty string) is passed to `default_if_none`, the
value is not changed, since it is not None. See
https://docs.djangoproject.com/en/1.10/ref/templates/builtins/#default-if-none
The behaviour here follows 100% logically from the documented behaviour
of the two components.
Regards,
Luke
Sorry for the lengthy email. Thanks for any input.
Tim
--
You received this message because you are subscribed to the Google
Groups "Django developers (Contributions to Django itself)" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to [email protected]
<mailto:[email protected]>.
To post to this group, send email to
[email protected]
<mailto:[email protected]>.
Visit this group at https://groups.google.com/group/django-developers.
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-developers/b9d7b557-5826-4c7e-a064-5f8b59312faa%40googlegroups.com
<https://groups.google.com/d/msgid/django-developers/b9d7b557-5826-4c7e-a064-5f8b59312faa%40googlegroups.com?utm_medium=email&utm_source=footer>.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "Django
developers (Contributions to Django itself)" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/django-developers.
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-developers/a7dc3b9e-195f-e4e4-2692-4b07de68c0cd%40cantab.net.
For more options, visit https://groups.google.com/d/optout.