Opened 4 years ago
Last modified 3 years ago
#32681 closed Bug
'subtitle' missing from admin context on index page — at Version 1
Reported by: | Zain Patel | Owned by: | nobody |
---|---|---|---|
Component: | contrib.admin | Version: | 3.2 |
Severity: | Release blocker | Keywords: | admin, template |
Cc: | Triage Stage: | Ready for checkin | |
Has patch: | yes | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description (last modified by )
This looks like a bug introduced in Django 3.2 with the introduction of a new variable introduced in the base templates (django/contrib/admin/templates/base_site.html
) named subtitle.
This variable is passed in most places within the admin site, e.g in django/contrib/admin/options.py
Loading the admin index page with log-level debug shows the following exception/stack trace (that admittedly does not affect anything functional - simply clutters the logs):
Exception while resolving variable 'subtitle' in template 'admin/index.html'. Traceback (most recent call last): File "...lib/python3.7/site-packages/django/template/base.py", line 829, in _resolve_lookup current = current[bit] File "...lib/python3.7/site-packages/django/template/context.py", line 83, in __getitem__ raise KeyError(key) KeyError: 'subtitle' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "...lib/python3.7/site-packages/django/template/base.py", line 835, in _resolve_lookup if isinstance(current, BaseContext) and getattr(type(current), bit): AttributeError: type object 'RequestContext' has no attribute 'subtitle' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "...lib/python3.7/site-packages/django/template/base.py", line 843, in _resolve_lookup current = current[int(bit)] ValueError: invalid literal for int() with base 10: 'subtitle' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "...lib/python3.7/site-packages/django/template/base.py", line 850, in _resolve_lookup (bit, current)) # missing attribute django.template.base.VariableDoesNotExist: Failed lookup for key [subtitle] in
I believe this can be fixed by providing subtitle: None
in the AdminSite.each_context` method to default it to that. I am happy to create a PR for this.
On second though - instead of hardcoding subtitle
to None - potentially it should be a customisable option in the AdminSite itself, so:
class MySite(AdminSite):
site_header = "blah"
subtitle = "my subtitle"
?