#15053: Make templates more reusable by Improving template loading algorithm to
avoid extending infinite recursion
---------------------------------+----------------------------------------
Reporter: pmartin | Owner: unaizalakain
Type: New feature | Status: assigned
Component: Template system | Version: master
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 1
Easy pickings: 0 | UI/UX: 0
---------------------------------+----------------------------------------
Comment (by prestontimmons):
I pushed some more updates to the patch.
The template loader api is now simpler and more efficient, thanks to
apollo13's suggestions. I'm open to input if this can be simplified even
more.
'''Loader API'''
`get_template_sources` yields all paths the loader will look at for a
given template name. This already existed for the filesystem and app
loaders. They now also exist for the egg and cached loaders.
`get_internal` takes a source argument as returned by
`get_template_source` and returns the template contents, or raises
`TemplateDoesNotExist`
`BaseLoader.get_template` iterates through sources and returns the first
matching one, unless a skip argument is passed. The skip argument is a set
of sources to ignore. If no template is found, `TemplateDoesNotExist` is
raised.
The next thing I want to look into is updating the template debug post-
mortem message to accurately reflect which templates were skipped or not
found. I would also like to improve the message when circular extending
happens as well.
I checked with Aymeric. He agreed these updates are mostly orthogonal to
his recent DEP. I think the main place these would overlap is if
`get_template`/`select_template` is updated to also use the
`Loader.get_template` api instead of the current `Loader.load_template`. I
don't plan to propose any changes to those just yet.
--
Ticket URL: <https://code.djangoproject.com/ticket/15053#comment:46>
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/065.7f8501c8ea0144c02dcba1b53f46181d%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.