#28825: Templated email with {% extends parent_name %} doesn't re-resolve the
base
template
---------------------------------+--------------------------------------
Reporter: Andrew | Owner: nobody
Type: Uncategorized | Status: new
Component: Template system | Version: 1.11
Severity: Normal | Resolution:
Keywords: | Triage Stage: Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
---------------------------------+--------------------------------------
Description changed by Andrew:
Old description:
> In django templating you can use `{% extends parent_name %}` to indicate
> that the template is derived from another. We use this feature along
> with django-templated-email to have different base email templates for
> white-label purposes.
>
> The issue appears to be that `{% extends parent_name %}` does not get re-
> evaluated when the variable changes, eg. from `email/app1.email` to
> `email/app2.email`.
>
> * The Engine uses `django.template.loaders.cached.Loader`
> * The first time the template is loaded, the parent template is loaded
> based on `parent_name` is loaded
> * Subsequent emails load the template, but do not re-evaluate the
> `extends`
>
> If this is as-designed, how would one go about clearing out that cache.
> I am using code like this (when setting up my test case) but it doesn't
> appear to clear the cache, even though my `print()` debugging shows its
> the same object (`<django.template.loaders.cached.Loader object at
> 0x113e99828>`_
>
> {{{
> for template in engines.all():
> for loader in template.engine.template_loaders:
> loader.reset()
> }}}
New description:
In django templating you can use `{% extends parent_name %}` to indicate
that the template is derived from another. We use this feature along with
django-templated-email to have different base email templates for white-
label purposes.
The issue appears to be that `{% extends parent_name %}` does not get re-
evaluated when the variable changes, eg. from `email/app1.email` to
`email/app2.email`.
* The Engine uses `django.template.loaders.cached.Loader`
* The first time the template is loaded, the parent template is loaded
based on `parent_name` is loaded
* Subsequent emails load the template, but do not re-evaluate the
`extends`
----
If this is as-designed, how would one go about clearing out that cache?
When setting up my test case I call the code below, but it doesn't appear
to clear the cache, even though my `print()` debugging shows its the same
object (`<django.template.loaders.cached.Loader object at 0x113e99828>`_
{{{
for template in engines.all():
for loader in template.engine.template_loaders:
loader.reset()
}}}
--
--
Ticket URL: <https://code.djangoproject.com/ticket/28825#comment:1>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" 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].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/066.ec1f89a30ad861619f1463a9656cd01f%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.