#35233: Push templates checks down to backend engine classes
------------------------------------------------+------------------------
Reporter: Adam Johnson | Owner: nobody
Type: Cleanup/optimization | Status: new
Component: Core (System checks) | Version: dev
Severity: Normal | Keywords:
Triage Stage: Unreviewed | Has patch: 0
Needs documentation: 0 | Needs tests: 0
Patch needs improvement: 0 | Easy pickings: 0
UI/UX: 0 |
------------------------------------------------+------------------------
Currently, the three system checks for template settings are individual
functions in
[
https://github.com/django/django/blob/main/django/core/checks/templates.py
django.core.checks.templates]. This structure leads to some issues:
1. The checks are specific to DTL (Django Template Language), but get run
for all backends. DTL-specific code gets loaded and run even when not
using it, notably the fairly slow `get_template_tag_modules()`.
2. `check_for_template_tags_with_the_same_name` is inaccurate because it
combines `libraries` from all template backends, so might report an issue
when none exists.
3. The checks are still run when no template backend is configured
(`settings.TEMPLATES = []`).
I propose the checks be restructured to live within the engine classes in
`django.template.backends`, adopting the same pattern used for model and
field checks, admin checks, etc.
In practice, this would mean adding a dummy `BaseEngine.check()` method,
then moving the existing checks into methods called by an overridden
`DjangoTemplates.check()`. A single function left in
`django.core.checks.templates` would loop over
`django.template.engines.all()` to combine results from backends’
`check()` methods.
--
Ticket URL: <
https://code.djangoproject.com/ticket/35233>
Django <
https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.